• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET MVC4入门教程(五):从控制器访问数据模型

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

作者:葡萄城控件技术团队 字体:[增加 减小] 来源:互联网 时间:2017-05-11

葡萄城控件技术团队通过本文主要向大家介绍了精通asp.net mvc4,精通asp.net mvc4 pdf,asp net mvc4教程,asp net mvc4,asp net mvc4高级编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在本节中,您将创建一个新的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());
  }
}
</div>

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

private MovieDBContext db = new MovieDBContext();
</div>

向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);
}
</div>

如果查找到了一个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 方法。请注意这些代码是如何在Index操作方法中,创建List对象,并调用View方法的。

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

public ActionResult Index()
{
   return View(db.Movies.ToList());
}
</div>

当您创建电影控制器时,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>
}
</div>

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

使用SQL Server LocalDB

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

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

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET MVC4 利用uploadify.js多文件上传
  • ASP.NET mvc4中的过滤器的使用
  • asp.net Mvc4 使用ajax结合分页插件实现无刷新分页
  • [Asp.Net MVC4]验证用户登录实现实例
  • asp.net mvc4 mysql制作简单分页组件(部分视图)
  • asp.net mvc4中bootstrap datetimepicker控件的使用
  • asp.net mvc4 mysql制作简单分页组件(部分视图)
  • asp.net mvc4中bootstrap datetimepicker控件的使用
  • ASP.NET MVC4入门教程(九):查询详细信息和删除记录
  • ASP.NET MVC4入门教程(八):给数据模型添加校验器

相关文章

  • 2017-05-11[c#]asp.ent下开发中Tag的开发技巧
  • 2017-05-11.net Cookies安全性实践分析
  • 2017-05-11详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
  • 2017-05-11ADO.NET之连接池技术的使用详解
  • 2017-05-11ASP.NET开发中经常用到10款工具软件介绍
  • 2017-05-11那些年,我还在学习asp.net(二) 学习笔记
  • 2017-05-11ASP.NET的事件模型(很适合学习的文章)
  • 2017-05-11ASP.NET与数据库相关技巧
  • 2017-05-11ASP.NET设计网络硬盘之两重要类代码
  • 2018-08-20C#/.NET读取或修改文件的创建时间及修改时间详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 水晶报表asp.net的webform下基本用法实例
    • ASP.Net MVC_DotNetZip简单使用方法,解决文件压缩的问题
    • 使用UserControl做网站导航条的思路 分析
    • 使用NLog给Asp.Net Core做请求监控的方法
    • 如何在.NET Core应用中使用NHibernate详解
    • Asp.Mvc 2.0实现用户注册实例讲解(1)
    • C# winform打印excel的方法
    • asp.net为网页动态添加关键词的方法
    • 测试控制台使用方法
    • ASP.NET使用AjaxPro实现前端跟后台交互详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有