自学MVC——控制器访问模型数据

当当下等同节省被,我们以创造一个初的MoviesController类,并编辑代码,实现获取影片数据及下视图模板在浏览器中表现影片数据的功能。

以拓展下一样步事先,点击“生成应用程序”使应用程序编译一潮。

右键单击Controllers文件夹,新建一个曰吧“MoviesController”的控制器。在开立窗口各选项如下图所示:

图片 1

点击添加,将创造以下文件盒文件夹:

  • 类的 Controllers 文件夹下增产MoviesController.cs文件
  • 列的Views文件夹下增产Movies文件夹
  • 以Views/Movies文件夹下开创了Create.cshtml, Delete.cshtml,
    Details.cshtml, Edit.cshtml, 和 Index.cshtml 五独公文。

ASP.NET MVC4
为你自动生成CURD(创建、读取、修改和去)操作方法和视图(自动创建CURD操作方法和视图常吃称脚手架)。现在,你有了一个完完全全意义的Web应用程序,可以来得影片列表和详细信息、创建影片、编辑影片和去影片。

运转应用程序,在浏览器地址栏附加/Movies,访问Movies控制器。因为应用程序依赖默认路由(在Global.asax文件中发生定义),浏览器请求http://localhost:54454/Movies/被路由到默认的Movies控制器的Index操作方法。换句话说,浏览器请求http://localhost:54454/Movies/与请求http://localhost:54454/Movies/Index的效果是相同的。因为没有添加过任何数据,所以当前影片列表是空的。

新建影片
                                                                       
                     

点击“新建”链接,进入电影编辑页面,输入各项内容后,点击“新建”按钮,会要表单送给服务器端,影片信息用会见叫保留及数据库。返回到列表,你拿见到刚刚于创造的录像出现于列表中。

专注:日期格式来后台验证,输入2013/11/19格式正值会由此,横杠的不行…

创立更多之电影实体,试一试编辑、详情以及去链接等富有功能。

 

翻开自动生成的代码
                                                                       
      

打开Controllers\MoviesController.cs文件,查看下生成的Index方法

public ActionResult Index()
        {
            return View(db.Movies.ToList());
        }

MoviesController类声明的下同样履“ private MovieDBContext db = new
MovieDBContext();”是一个前方描述了的影视数据库上下文对象,你可以采用是目标查询、编辑和去影片。

影视控制器收到请求后,返回数据库影片表中所有实体并将结果传被Index视图。

强类型模型与@Model关键字

在之前的课被,学习了控制器如何通过ViewBag对象传递数据还是对象吃视图模板。ViewBag是一个动态目标,提供好的继绑定方式来传递信息给视图。ASP.NET
MVC同时提供传递强类型数据要对象被视图模板的能力。强类型方式再次有利于编译时检测代码和以Visual
Studio 编辑器中智能提醒。Visual
Studio的下手架机制创建方法与视图时,采用这种措施处理MoviesController类和视图模板。

查看下Controller\MoviesController.cs文件被变化的Details方法。代码如下:

 public ActionResult Details(int id = 0)
        {
            Movie movie = db.Movies.Find(id);
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);
        }

假若找到影片,则影片模型的实例传递给Detail视图。看一下Views\Movies\Details.cshtml的文件内容。

由此当视图模板文件顶部引入”@model
Mvc_Movie.Models.Movie”语句子,你得指定视图期望的靶子模型,当你创造影片控制器时,Visual
Studio自动在Details.cshtml文件顶部引入@model语句:

@model使您得直接访问控制器传递给视图的强类型模型对象。例如,在Details.cshtml模板里,代码应用强类型对象传递影片的每个字段给HTML
Helpers的DisplayNameFor和DisplayFor方法。Create和Edit方法与视图模板同样传递影片模型对象。

翻Index.cshtml视图模板与MoviesController.cs文件被之Index方法。注意在Index方法吃,被视图Helper方法调用时,代码如何创造列表对象。

public ActionResult Index()
        {
            return View(db.Movies.ToList());
        }

当我们创建影片控制器时,Visual
Studio在Index.cshtml文件顶部自动引入以下@model语句:“@model
IEnumerable<Mvc_Movie.Models.Movie>”

@model告诉句使你可直接看由控制器通过强类型对象传递过来的电影列表。例如,在Index.cshtml模板里,代码通过foreach遍历强类型的型对象

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Genra)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Date)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ID })
        </td>
    </tr>

 

为模型对象是强类型的(IEnumerable<Movie>对象),循环中的每个对象类型是Movie。这象征编译时检测代码和代码编辑器中全然的智能提醒。

下SQL Server本地数据

以点例子中公可能会见当意外,填写的录像信息到底存放于乌,内存也?重开Web,发现丰富的信息以会保留,说明非是内存,下面就是吧一下是问题。

实业框架代码先行模式检测到对影片数据库的链接字符串不存,则会活动创建数据库。你得通过查看App_Data文件夹来确认数据库已经于创造。如果您无来看数据库文件,在化解方案资源管理器工具栏点击“显示所有文件”按钮刷新数据,然后开展App_Data文件夹,文件称一般也“aspnet-Mvc_Movie-20140102143021.mdf”。

留神:此时要还无发现数据库文件,请进行如下操作。将web.config文件打开

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-Mvc_Movie-20140102143021;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Mvc_Movie-20140102143021.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>

 替换成下面:注意键值需要是MovieDBContext,类名一致,否则会招来不交数据库文件。

<connectionStrings>
    <add name="MovieDBContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-Mvc_Movie-20140102143021;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Mvc_Movie-20140102143021.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>

 此时运行添加数量,然后开展App_Data文件夹,就可以看到数据库文件了。查看双击数据库文件,自动打开服务器资源管理器,展开“表”文件夹,会见到Movie表。右键单击Movie表,选择“打开表定义”,查看实体框架代码先行为卿创造的阐明结构:

CREATE TABLE [dbo].[Movies] (
    [ID]    INT   IDENTITY (1, 1) NOT NULL,
    [Name]  NVARCHAR (MAX)  NULL,
    [Genra] NVARCHAR (MAX)  NULL,
    [Price] DECIMAL (18, 2) NOT NULL,
    [Date]  DATETIME  NOT NULL,
    CONSTRAINT [PK_dbo.Movies] PRIMARY KEY CLUSTERED ([ID] ASC)
);

 

顾Movie表如何映射到公之前创建的Movie类。实体框架代码先行基于你的Movie类自动创建表结构。结束查看,需要经右键单击MvcMovie.Models.MovieDbContext,选择
关闭连接。(如果未关连接。(如果未闭馆连接,则下次运行品种时来或出错)。

如今开创了数据库,并从中获取数据显示了简易列表。在生一样节约中,我们用翻开其他的下手架生成的代码并增加名吧SearchIndex方法和视图用于查询数据库中影片信息。

 

 

相关文章