第4章 控制器ppt课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4章 控制器ppt课件.ppt》由会员分享,可在线阅读,更多相关《第4章 控制器ppt课件.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在此输入您的封面副标题第4章 控制器ASP.NET MVC 程序设计开发教程第4章 控制器学习目标重点难点Controller 的创建动作名称选择器动作方法选择器过滤器属性动作执行结果理解控制器的概念掌握控制器的创建掌握动作名称选择器掌握动作方法选择器掌握过滤器属性熟悉动作执行结果第4章 控制器 Controller(控制器)在 ASP.NET MVC 中负责控制所有客户端与服务器端的交互,并负责协调 Model 与 View 之间的数据传递,是 ASP.NET MVC 整体运作的核心角色,非常重要。 本章以在线音乐商店项目为例来讲解控制器的创建和使用。 在线音乐商店项目,创建一个名为 EBu
2、yMusic 数据库,该数据库包含 Artist、Album、Genre、Cart、Order 和 OrderDetail 6 个数据表,分别存放音乐流派、歌手、歌曲和订单数据。 4.1 控制器概述 ASP.NET MVC 的核心就是 Controller(控制器),它负责处理客户端(常常是浏览器)发送来的所有请求,并决定将什么内容响应给客户端,通过这种方式,Controller 负责响应用户的输入,并且在响应时修改 Model,把数据输出到相关的 View。MVC 架构中的 Controller主要关注应用程序流入、输入数据的处理,以及提供向 View 输出的数据。 Controller(控
3、制器)本身是一个派生于 Controller 的类,这个类包含有多个方法,这些方法中声明为 public 的即被当作动作(Action),可以通过这些 Action 接收网页请求并决定应用的视图(View)。 4.1.1 Controller 的创建与结构 按照第 2 章所讲解的方法创建 ASP.NET MVC 架构的在线音乐商店网站 EBuy,添加对 Ebuy Music 数据库的“ADO.NET 实体数据模型”到系统中,设置其名称为:EBuyMusicEntities,然后按图 4-1 所示添加 StoreController。 4.1.1 Controller 的创建与结构 2包含读/写
4、操作控制器和视图的 MVC 控制器(使用 Entity Framework) “包含读/写操作控制器和视图的 MVC 控制器(使用 Entity Framework)”模板名副其实,此模板可以帮助开发人员生成访问 EF 对象的代码,并为这些对象生成了 Create、Edit、Details和 Delete 视图。 在选择使用本模板后,“模型类”下拉列表框中将列出项目当前所识别的 Model 类,如果添加的 Model 类此时未列出,则先编译项目后再使用本功能则可更新模型类列表。本例选择 Genre(流派)模型类创建 StoreController,如图 4-2 所示。4.1.1 Control
5、ler 的创建与结构 3包含空的读/写操作的 MVC 控制器 使用“包含空的读/写操作的 MVC 控制器”创建 Controller 时,基本规律与“包含读/写 操作控制器和视图的 MVC 控制器(使用 Entity Framework)”一致,但各个 Action 中的实际 功能代码没有自动创建,同时,没有名为 DeleteConfirmed 的 Action,改为创建了使用 HttpPost 修饰的第二个 Delete 的同名 Action。 4.1.1 Controller 的创建与结构 4其他控制器 此外,还有“空 API 控制器”“包含读/写操作控制器和视图的 API 控制器(使用
6、Entity Framework)”和“包含空的读/写操作的 API 控制器”三种控制器,这些控制器主要不用于向 View 返回数据,派生自 ApiController,相应内容请参见其他资料。 除了使用模板创建 Controller,还可以直接手工创建需要的 Controller,但一般通过模板创建。 在创建 Controller 时,需要注意应用“惯例优先原则”,对于 Controller 而言,需要注意的惯例包括: Controller 必须放在 Controllers 文件夹内。 Controller 的类名必须以“Controller”字符串为结尾。 4.1.2 Controller
7、 的运行过程 当 Controller 被 MvcHandler 选中之后,下一步就是通过 ActionInvoker 选取适当的 Action来执行。在 Controller 中,Action 可以声明参数也可以不声明参数;ActionInvoker 根据当前的RouteValue 及客户端传来的信息准备好可输入到Action 参数的数据,并正式调用被选中的Action 对应的方法。 Action 执行完成后,返回值通常是 ActionResult 类,此类是抽象类,具体实际返回对象是 ActionResult 的派生类,ASP.NET MVC 常用的派生类包括 ViewResult 返回一
8、个 ViewRedirectResult 控制页面跳转到另一地址,ContentResult 用于返回文本内容,FileResult 用于返回一个文件。Controller 在得到 ActionResult 后,执行 ActionResult 的 ExecuteResult 方法,并将执行结果返回给客户端,以完成 Controller 需要完成的任务。 4.1.2 Controller 的运行过程 Controller 在执行时,还有动作过滤器(Action Filter)机制,过滤器主要分为授权过滤器(Authorization Filter)、动作过滤器(Action Filter)、结果
9、过滤器(Result Filter)和异常过滤器(Exception Filter)。 当 ActionInvoker 找不到对应的 Action 可用时,默认会执行 System.Web.Mvc.Controller 类的 HandlerUnkownAction 方法,在此类中,HandlerUnkownAction 方法默认会响应“HTTP 404无法找到资源”的错误信息。 由于 HandlerUnkownAction 方法在 Controller 类中被声明为 virtual 方法,所以可以在自创建的各种 Controller 中覆盖为自己需要的实际处理流程。 4.2 动作名称选择器 当
10、 ActionInvoker 选取 Controller 中 Action 时,默认会应用反射机制找到相同名字的方法,这个过程就是动作名称选择器(Action Name Selector)运作的过程,这个选择查找过程对 Action的名称字符大小写不进行区分,以下代码的 Index 活动,在客户端发来请求的 URL 中,“Index”字符的大小写结果都一样,动作名称选择器将直接调用 Index 方法。using System.Web.Mvc;namespace EBuy.Controllers public class EmptyTemplateController : Controller
11、public ActionResult Index() return View(); 4.2 动作名称选择器有时,可能需要修改已完成方法的 Action 名称,但并不想修改已完成的方法,则可对Action 对应方法使用 ActionName 属性进行修饰,在上例代码中,修改代码如下:using System.Web.Mvc;namespace EBuy.Controllers public class EmptyTemplateController : Controller ActionName(OtherName) public ActionResult Index() return Vie
12、w(); 4.2 动作名称选择器 修改后原有名为 Index 的 Action 则实际上并不存在,改为实际存在一个名称“OtherName”的 Action,并且在调用此 Action 时,ASP.NET MVC 将查找“Views/EmptyTemplate/OtherName.cshtml”,原来名为 Index 的 View 不再起作用。 需要注意的是,通过此方法修改 Action 名称可能导致多个方法对应同一个 Action 名称,此错误不会在编译时被发现,仅能在运行时请求对应 Action 才引发异常,如下例所示代码将引发“对控制器类型EmptyTemplateController的
13、操作OtherName的当前请求在下列操作方法之间不明确”的异常。 4.2 动作名称选择器using System.Web.Mvc;namespace EBuy.Controllers public class EmptyTemplateController : Controller ActionName(OtherName) public ActionResult Index() return View(); ActionName(OtherName) public ActionResult OtherAction() return View(); 4.3 动作方法选择器 ActionInv
14、oker 在选取 Controller 中的公开方法时,ASP.NET MVC 还提供一个名为“动作方法选择器”(Action Method Selector)的特性,动作方法选择器应用在 Controller 中的方法上,以帮助 ActionInvoker 选择适当的 Action。4.3.1 NonAction 属性 如果将 NonAction 属性应用在 Controller 中的 Action 对应方法上,则此方法将不再作为Action 而被 ActionInvoker 选择执行,客户端请求此名称的 Action 则将返回一个 404 的错误信息。以下案例中,原有名为 Index 的
15、Action 将不再存在。 using System.Web.Mvc;namespace EBuy.Controllers public class EmptyTemplateController : Controller NonAction public ActionResult Index() return View(); 4.3 动作方法选择器 4.3.2 HttpGet 属性、HttpPost 属性、HttpDelete 属性和 HttpPut 属性 HttpGet、HttpPost、HttpDelete、HttpPut 属性是动作方法选择器的一部分,如果在 Actio上应用 Http
16、Post 属性,则此 Action 只会在收到 HTTP Post 请求时,才可以选择此 Action;否则,客户端发送来的任何 HTTP 请求,对应 Action 都将会被选择并执行。 这些属性通常会用于需要接收客户端窗口数据的时候,对于同名的 Action,创建一个用于接收 HTTP Get 请求的 Action 用于显示窗口给用户提供填写数据的界面,另一个同名 Action则应用HttpPost属性,用于接收用户发送来的数据,完成对应的功能实现。这种方法常用于Create、Edit 等功能,如下例所示。 4.3 动作方法选择器using System.Web.Mvc; namespace
17、 EBuy.Controllers public class EmptyTemplateController : Controller public ActionResult Index() return View(); public ActionResult CreateResult() public ActionResult Create() return View(); HttpPost public ActionResult Create(FormCollection fc) /处理创建对象的实际业务过程 return RedirectToAction(CreateResult); 4
18、.3 动作方法选择器 当浏览器中输入“EmptyTemplate/Create”地址时,将显示图 4-4 所示的数据填写页面,在此页面中,有一个 Form 用于填写用户需要输入的数据,Form 中有一提交按钮(图中“建”按钮)。单击“创建”按钮后,页面中用户数据将提交回同名的“EmptyTemplate/ Create”,而此时,由于 Form 是自动使用 Post 方法回发数据到服务器,ActionInvoker 将自动选择使用了HttpPost修饰的 Create 活动,Action 处理完成后,将跳转到 CreateResult 活动,返回名为“CreateResult”的 View,结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 控制器ppt课件 控制器 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内