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

Asp.net页面生命周期和Asp.net Mvc页面生命周期之间有什么区别?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,Asp.net页面生命周期之间的区别是什么 和Asp.net Mvc页面生命周期 Asp.net页面生命周期只需记住SILVER U s启动 I-初始化 L-负荷 V-验证 电子事件处理 R-渲染 U-卸载 Mvc和Asp.net页面的实际区别是什么 ASP.NET Web窗体使用页面控制器模式方法进行渲染 布局。在这种方法中,每个页面都有自己的控制器,即。, 处理请求的代码隐藏文件 为了实现有状态行为,使用viewstate。目的是 为开发人员提供与典型WinForms相同的体验 应用程序

Asp.net页面生命周期之间的区别是什么 和Asp.net Mvc页面生命周期

Asp.net页面生命周期只需记住SILVER U
s启动
I-初始化
L-负荷
V-验证
电子事件处理
R-渲染
U-卸载

Mvc和Asp.net页面的实际区别是什么

  • ASP.NET Web窗体使用页面控制器模式方法进行渲染 布局。在这种方法中,每个页面都有自己的控制器,即。, 处理请求的代码隐藏文件
  • 为了实现有状态行为,使用viewstate。目的是 为开发人员提供与典型WinForms相同的体验 应用程序
ASP.NET MVC

  • 它采用前端控制器的方法。这一方针意味着一个共同的目标 所有页面的控制器处理请求

  • NET MVC方法与web方法一样是无状态的。所以没有 视图状态的概念

但实际上,MVC本身没有页面生命周期(因为没有“页面”对象),但有一个请求处理管道:


您可以从

ASP.NET页面生命周期与web表单完全不同,web表单中没有类似的事件,例如:预呈现oninit等。每当我们请求URL时,唯一发生的事情就是,一个控制器的实例被装箱,并调用它的某个操作方法,从而在浏览器中将视图呈现为HTML作为响应

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还继承了IHTTPassynchandler。当MVC处理程序执行时,它将异步调用httpAsyncHandler的BeginProcessRequest方法

当调用processrequest方法时,将创建一个新的控制器。控制器是从ControllerFactory创建的。有一个ControllerBuilder类将设置ControllerFactory

您也可以创建自己的ControllerFactory,但默认情况下它将是DefaultControllerFactory。RequestContext和控件的名称将传递给方法CreateController,以获取特定的控件

4)控制器执行

用户调用控制器并请求其操作

Execute()方法首先创建TempData对象。TempData是从TempDataDictionary类派生的字典,存储在短生命周期会话中,是字符串键和对象值

Execute()方法根据URL从RoutedData获取操作。然后,控制器类调用ConcollerActionInvoker,后者根据请求构建参数列表

这些从请求参数中提取的参数将作为方法参数。这些参数将被传递给执行的任何控制器方法

最后,它将调用InvokeAction方法来执行该操作

5)调用的渲染视图方法

最后,当我们调用
reutrn View()时,
Render View方法被调用,并将响应放在要显示的页面上

控制器通常执行RedirectToAction方法或RenderView方法。调用控制器的RenderView()方法时,该调用将委托给当前ViewEngine的RenderView()方法

方法使用名为ViewLocator类的类来查找视图。接下来,它使用BuildManager从其路径创建ViewPage类的实例

接下来,如果页面有母版页,则设置母版页的位置。如果页面有ViewData,则设置ViewData。最后,在ViewPage上调用RenderView()方法

摘要说明图:

深度图:

请求流“ 以下是asp.net mvc请求流:

参考链接 有关详细信息,请参阅


还有

姚有没有尝试过在网上搜索很长时间,但很神奇