- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MVC基础controller和action
HYPERLINK /jams742003/archive/2010/02/03/1662696.html mvc基础系列说谈(3)——controller与action
1
if?(!ActionInvoker.InvokeAction(ControllerContext, actionName))
在深入研究调用过程的细节前,先有一个总体的认识是很有帮助的。InvokeAction方法大致是按照这样的顺序进行的:
?
查找action:MVC内部查找action的方法似乎有点复杂,涉及到一个ActionDescriptor的东西,但是原理上是通过反射,在以后的文章中会有所涉及。
验证和过滤:众所周知的IActionFilter和IAuthorizationFilter在这部分生效,它们在真正执行action之前,事实上对于IResultFilter或IExceptionFilter这样的过滤器是在action执行之后执行的,图中对于这个没有画出。
执行action:真正进入用户代码执行,通过反射调用,调用之前还涉及到复杂的参数提供和绑定,在以后的文章中会涉及。
执行结果:ActionResult在这部起到了关键的作用,ActionResult有多个派生,其中最为常见的就是ViewResult。ActionResult是前面步骤执行的最终“果实”,通过执行ActionResult的ExecuteResult抽象方法,一个HttpRespose被正确的构造好,准备传回客户端。
?
从ActionResult开始说起
就像上一篇讲到的,我们可以在Controller的Execute方法中直接对HttpContext.Response操作,绕过action;即便我们走了action这一路,仍然可以在action中像下面这样直接操作Response:
1
2
3
4
5
6
7
8
9
10
11
public?class?SimpleController : Controller
{
????public?void?MyActionMethod()
????{
????????Response.Write(Ill never stop using the blinkblink/blink tag);
????????// ... or ...
????????Response.Redirect(/Some/Other/Url);
????????// ... or ...
????????Response.TransmitFile(@c:\files\somefile.zip);
????}
}
然而这种方式难以维护,而且难以单元测试,于是MVC框架建议action返回ActionResult,并由框架调用ActionResult的ExecuteResult方法,这类似于设计模式中的command模式。你会看到这种设计模式在这里的运用实在是十分精辟的。
ActionResult是一个十足的抽象类,抽象到不能再抽象了,它定义了唯一的ExecuteResult方法,参数为一个ControllerContext,其中封装了包括HttpContext在内的许多对象,也是重写这个方法唯一的上下文信息:
1
2
3
4
5
6
7
8
9
namespace?System.Web.Mvc {
?
????public?abstract?class?ActionResult {
?
????????public?abstract?void?ExecuteResult(ControllerContext context);
?
????}
?
}
MVC内置了很多实用的ActionResult
Action Result
Helper Method
Description
ViewResult
View
Returns a view as a webpage
PartialViewResult
PartialView
Returns a partial view. A partial view has the same role as a user control. A partial view will be rendered within a main view
RedirectResult
Redirect
Redirects to another action method based on its URL
RedirectToRouteResult
RedirectToAction
RedirectToRoute
Redirects to another action method
ContentResult
您可能关注的文档
- 4矢量分析和场论讲义PPT.ppt
- 4辅助分析和设计.ppt
- 5-4能量转化和守恒定律.ppt
- 5-房地产如何做好接待和带看.ppt
- 浙大英语在线4.doc
- 5产品试验和设计.ppt
- 浙大远程英语在线4.doc
- 7 MRP和ERP(修改版).ppt
- 浙大继续教育英语.doc
- abungmy医_学科研课题设计和论文撰写.doc
- oracle xml publisher 功能和使用.pdf.pdf
- Oracle 10g RAC安装和配置for AIX.doc
- Caldera OpenLinux安装和配置手册10.pdf
- oracle 教程 第1章 关系数据库和SQL语言环境.ppt
- PADS(PCB)文件和Allegro(BRD)文件互转.pdf
- PCI总线配置和应用.doc
- PHP和MYSQL开发基础.ppt
- 北京交通大学公共管理专业陈振明《公共管理学》考研笔记整理2-育明·斯泰朗考研考博.pdf
- Presentation-变压器绕组分析设计方法和举例-20120421.ppt
- php和mysql+5程序设计(第2版)_IT168文库.pdf
文档评论(0)