ASP.NET MVC4入门教程(五):从控制器访问数据模(2)

此@model声明使得控制器可以将强类型的Model对象传递给View视图, 从而您可以在视图里访问传递过来的强类型电影Model。例如,在Details.cshtml模板中,DisplayNameFor 和DisplayFor HTML Helper通过强类型的Model对象传递了电影的每个字段。创建和编辑方法还有视图模板都在传递电影的强类型模型对象。

看一下Index.cshtml视图模版和MoviesController.cs中的Index 方法。请注意这些代码是如何在Index操作方法中,创建List对象,并调用View方法的。

此代码在控制器中传递Movies列表给视图:

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

当您创建电影控制器时,Visual Studio Express会自动包含 @model语句到Index.cshtml文件的顶部:

@model IEnumerable<MvcMovie.Models.Movie>

此@model声明使得控制器可以将强类型的电影列表Model对象传递给View视图。例如,在Index.cshtml模板中,在强类型的Model对象上使用foreach语句循环遍历电影列表:

@foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Title) </td> <td> @Html.DisplayFor(modelItem => item.ReleaseDate) </td> <td> @Html.DisplayFor(modelItem => item.Genre) </td> <td> @Html.DisplayFor(modelItem => item.Price) </td> <th> @Html.DisplayFor(modelItem => item.Rating) </th> <td> @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | @Html.ActionLink("Details", "Details", { id=item.ID }) | @Html.ActionLink("Delete", "Delete", { id=item.ID }) </td> </tr> }

因为Model对象是强类型的 (是IEnumerable<Movie>对象),所以在循环中的每个item对象的类型是Movie类型。好处之一是,这意味着您可以在代码编译时进行检查,同时在代码编辑器中支持更加全面的智能感知:

ASP.NET MVC4入门教程(五):从控制器访问数据模

使用SQL Server LocalDB

Entity Framework Code First代码优先,如果检测到不存在一个数据库连接字符串指向了Movies数据库,会自动的创建数据库。在App_Data文件夹中找一下,您可以验证它已经被创建了。如果您看不到Movies.mdf文件,请在解决方案资源管理器工具栏上,单击显示所有文件按钮,单击刷新按钮,然后展开App_Data文件夹。

ASP.NET MVC4入门教程(五):从控制器访问数据模

双击Movies.mdf打开数据库资源管理器,然后展开表文件夹以查看电影表。

ASP.NET MVC4入门教程(五):从控制器访问数据模

注: 如果没有显示数据库资源管理器,可以从工具菜单中,选择连接到数据库,然后关闭选择数据源对话框。这样将强制打开数据库资源管理器。

注: 如果您使用的 VWD 或 Visual Studio 2010 可能会看到类似下面的错误信息:

· 因为数据库 ' C:\Webs\MVC4\MVCMOVIE\MVCMOVIE\APP_DATA\MOVIES.MDF ' 是 706 版本的,所以无法打开。本服务器支持 655 和更早版本的数据库。无法降级支持。

· "InvalidOperation Exception was unhandled by user code" 所提供的 SqlConnection 没有指定初始数据库。

您需要安装SQL Server 数据工具和。并验证在前面所指定的MovieDBContext 连接字符串。

右键单击Movies表并选择显示表数据以查看您所创建的数据。

ASP.NET MVC4入门教程(五):从控制器访问数据模

右键单击Movies表,选择打开表定义查看Entity Framework代码优先所创建表的表结构。

ASP.NET MVC4入门教程(五):从控制器访问数据模

ASP.NET MVC4入门教程(五):从控制器访问数据模

请注意,如何将Movies表的表结构映射到您早些时候所创建的Movie类?Entity Framework 代码优先为您自动创建了基于Movie类的表结构。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwgzd.html