Ana*_*adi 11 asp.net asp.net-mvc
Asp.net页面生命周期和Asp.net Mvc页面生命周期有什么区别?
Asp.net页面生命周期只需记住SILVER U
s-启动
I-Initialization
L-Load
V-验证
电子事件处理
R
-Rendering U -Unload
Mvc和Asp.net页面的实际区别是什么?
Ehs*_*jad 54
ASP.NET页面生命周期与webforms完全不同,没有像我们在Web表单中那样的事件,例如:pre render,oninit等.每当我们请求url时,唯一发生的事情就是调用一些控制器动作并呈现响应在浏览器中.
根据MSDN,以下是asp.net mvc页面生命周期中涉及的主要步骤:
1)路由
将url路由到其控制器和操作
在ASP.NET应用程序中,每个asp.net页面都实现了IHTTPHandler接口.
此接口具有ProcessRequest()方法,该方法在您请求页面时被调用.ProcessRequest()方法负责处理请求并生成响应.因此,在ASP.NET应用程序中,它很简单,您在URL中请求页面
http://mysite1\default.aspx,然后在磁盘上搜索该页面并执行processrequest方法并生成响应.但是在MVC应用程序中,它不能以这种方式工作.特定请求不存在物理页面.所有请求都被路由到一个名为Controller的特殊类.控制器负责生成响应并将内容发送回浏览器.
2)URL路由模块拦截请求:
每当您针对ASP.NET MVC应用程序发出请求时,UrlRoutingModule HTTP模块都会拦截该请求.
当UrlRoutingModule拦截请求时,模块所做的第一件事就是将当前的HttpContext包装在HttpContextWrapper对象中.
HttpContextWrapper对象派生自HTTPContextBase类.
3)MVC处理程序执行
MVCHandler还继承自IHTTPAsyncHandler.当MVC Handler执行时,它将异步调用httpAsyncHandler的BeginProcessRequest方法.
调用进程请求方法时,将创建一个新控制器.控制器是从ControllerFactory创建的.有一个ControllerBuilder类,它将设置ControllerFactory.
您也可以创建自己的ControllerFactory,但默认情况下它将是DefaultControllerFactory.RequestContext和Contoller的名称将传递给方法CreateController方法以获取特定的Contoller.
4)控制器执行
调用controller并且用户请求调用其操作.
Execute()方法首先创建TempData对象.TempData是一个派生自TempDataDictionary类的字典,存储在短生命会话中,它是一个字符串键和对象值.
Execute()方法根据URL从RouteData获取Action.然后,Controller类调用ContollerActionInvoker,从请求中构建参数列表.
从请求参数中提取的这些参数将作为方法参数.参数将传递给执行的任何控制器方法.
最后,它将调用InvokeAction方法来执行Action.
5)渲染查看方法调用
最后,当我们调用
reutrn View()Render View方法时,调用并在要显示的页面上放置响应.Controller通常要么执行RedirectToAction方法,要么执行RenderView方法.当您调用控制器的RenderView()方法时,该调用将委托给当前的ViewEngine的RenderView()方法.
WebFormViewEngine.RenderView()方法使用名为ViewLocator类的类来查找视图.接下来,它使用BuildManager从其路径创建ViewPage类的实例.
接下来,如果页面具有母版页,则设置母版页的位置如果页面具有ViewData,则设置ViewData.最后,在ViewPage上调用RenderView()方法.


这是asp.net mvc请求流程:

有关详细了解,请参阅了解MVC页面生命周期
| 归档时间: |
|
| 查看次数: |
41138 次 |
| 最近记录: |