Asp.net页面生命周期和Asp.net Mvc页面生命周期有什么区别?

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时,唯一发生的事情就是调用一些控制器动作并呈现响应在浏览器中.

ASP.NET MVC页面生命周期:

根据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页面生命周期

另外 这是另一篇解释MVC页面生命周期的好文章