好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Asp.Net MVC4 官方教程

Asp.Net MVC4 官方教程

在本节中,您将创建一个新的 MoviesController 类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里。

在开始下一步前,先Build一下应用程序( 生成应用程序 ) (确保应用程序编译没有问题)

用鼠标右键单击Controller文件夹,并创建一个新的  MoviesController 控制器。当Build成功后,会出现下面的选项。设定以下选项:

· 控制器名称:  MoviesController .(这是默认值)。

· 模板:  MVC Controller with read/write actions and views, using Entity Framework .

· 模型类: Movie (MvcMovie.Models) .

· 数据上下文类:  MovieDBContext (MvcMovie.Models) .

· 意见: Razor (CSHTML). (默认值)。

单击 添加 。Visual Studio Express 会创建以下文件和文件夹:

· 项目控制器文件夹中的MoviesController.cs文件。

· 项目视图文件夹下的 Movie文件夹。

· 在新的Views\Movies文件夹中创建Create.cshtml、 Delete.cshtml、 Details.cshtml、 Edit.cshtml和Index.cshtml 文件。

ASP.NET MVC 4 自动创建 CRUD (创建、 读取、 更新和删除) 操作方法,和相关的视图文件(CRUD 自动创建的操作方法和视图文件被称为基础结构文件)。现在您有了可以创建,列表、 编辑和删电影Entity 所有的Web功能了。

运行应用程序,通过将/Movies追加到浏览器地址栏 URL的后面,从而浏览Movies控制器。因为应用程序依赖于默认路由 (  Global.asax 文件中的定义),浏览器请求 http://localhost:xxxxx/Movies 将被路由到 Movies 控制器默认的 Index  操作方法。换句话说,浏览器请求 http://localhost:xxxxx/Movies 等同于浏览器请求 http://localhost:xxxxx/Movies/Index 。因为您还没有添加任何内容,所以结果是一个空的电影列表。

    创建电影

点击 Create New 链接。输入有关电影的一些详细信息,然后单击 Create 按钮。

单击 Create 按钮将使得窗体提交至服务器,同时电影信息也会保存到数据库里,然后您会被重定向到URL/Movies,您可以在列表中看到您刚刚创建的新电影。

创建一些更多的电影数据。同时也可以尝试点击 编辑 、 详细信息 和 删除 功能的链接。

看一下生成的代码

打开 Controllers\MoviesController.cs 文件,并找到生成的 Index 方法。一本部分电影控制器和 Index 方法如下所示。

 public   class   MoviesController : Controller
{
      private  MovieDBContext db =  new   MovieDBContext();

      // 
     //   GET: /Movies/ 

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

下面是 MoviesController 类中实例化电影数据库上下文实例,如前面所述。电影数据库上下文实例可用于查询、 编辑和删除的电影。

 private  MovieDBContext db =  new  MovieDBContext();

向 Movies 控制器请求,从而返回 Movies 电影数据库表中的所有记录,然后将结果传递给 Index 视图。

强类型模型和 @model 关键字

在本系列之前的教程中,您看到了使用 ViewBag 对象,从控制器传递数据或对象给视图模板。 ViewBag 是一个动态的对象,提供了方便的后期绑定方法将信息传递给视图。

ASP.NET MVC 还提供了传递强类型数据或对象到视图模板的能力。这种强类型使得更好的在编译时检查您的代码并在Visual Studio 编辑器中提供更加丰富的智能感知。当创建操作方法和视图时, Visual Studio 中的基础结构机制使用了 MoviesController 类和视图模板。

在 Controllers\MoviesController.cs 文件中看一下生成的 Details 方法。电影控制器里的 Details 方法如下所示。

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

如果查找到了一个 Movie , Movie  模型的实例会传递给Detail视图。看一下 Views\Movies\Details.cshtml 文件里的内容。

通过引入视图模板文件顶部的 @model 语句,您可以指定该视图期望的对象类型。当您创建电影控制器时,Visual Studio 会将 @model 声明自动包含到 Details.cshtml 文件的顶部:

@model MvcMovie.Models.Movie

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

看一下 Index.cshtml 视图模版和 MoviesController.cs 中的 Index  方法。请注意这些代码是如何在I ndex 操作方法中,创建 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 类型。好处之一是,这意味着您可以在代码编译时进行检查,同时在代码编辑器中支持更加全面的智能感知:

  使用SQL Server LocalDB

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

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

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

注: 如果您使用的 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 数据工具 和 LocalDB 。并验证在前面所指定的MovieDBContext 连接字符串。

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

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

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

当您完成操作后,通过右键单击 MovieDBContext  ,选择 关闭连接 关闭该数据库连接。(如果您没有关闭连接,当您下次运行该项目时,可能会出现错误)。

现在,您可以在简单列表页面里,来显示数据库里的数据了。在下一次的教程中,我们会继续看看框架自动生成的其它代码。并添加一个 SearchIndex 方法和 SearchIndex 视图,使您可以在数据库中搜索电影了 。

--------------------------------------------------------------------------------------------------------------------

译者注:

本系列共9篇文章,翻译自Asp.Net MVC4 官方教程,由于本系列文章言简意赅,篇幅适中,从一个示例开始讲解,全文最终完成了一个管理影片的小系统,非常适合新手入门Asp.Net MVC4,并由此开始开发工作。9篇文章为:

1. Asp.Net MVC4 入门介绍

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

· 译文地址: http://www.cnblogs.com/powertoolsteam/archive/2012/11/01/2749906.html

2. 添加一个控制器

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller

· 译文地址: http://www.cnblogs.com/powertoolsteam/archive/2012/11/02/2751015.html

3. 添加一个视图

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view

· 译文地址: http://www.cnblogs.com/powertoolsteam/archive/2012/11/06/2756711.html

4. 添加一个模型

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model

· 译文地址: http://www.cnblogs.com/powertoolsteam/archive/2012/12/17/2821495.html

5. 从控制器访问数据模型

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller

· 译文地址: http://www.cnblogs.com/powertoolsteam/archive/2013/01/11/2855935.html

6. 验证编辑方法和编辑视图

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view

· 译文地址:

7. 给电影表和模型添加新字段

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table

· 译文地址:

8. 给数据模型添加校验器

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model

· 译文地址:

9. 查询详细信息和删除记录

· 原文地址: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods

· 译文地址:

 



葡萄城控件产品网站: http://www.gcpowertools.com.cn/  
葡萄城技术支持论坛: http://gcdn.grapecity.com/

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Asp.Net MVC4 官方教程的详细内容...

  阅读:70次

上一篇: Koch曲线

下一篇:.NET程序员的C\C++情结