Asp.net页面生命周期和Asp.net Mvc页面生命周期之间有什么区别?
Asp.net页面生命周期之间的区别是什么 和Asp.net Mvc页面生命周期 Asp.net页面生命周期只需记住SILVER UAsp.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相同的体验 应用程序
s启动
I-初始化
L-负荷
V-验证
电子事件处理
R-渲染
U-卸载
Mvc和Asp.net页面的实际区别是什么
- ASP.NET Web窗体使用页面控制器模式方法进行渲染 布局。在这种方法中,每个页面都有自己的控制器,即。, 处理请求的代码隐藏文件
- 为了实现有状态行为,使用viewstate。目的是 为开发人员提供与典型WinForms相同的体验 应用程序
- 它采用前端控制器的方法。这一方针意味着一个共同的目标 所有页面的控制器处理请求
- NET MVC方法与web方法一样是无状态的。所以没有 视图状态的概念
您可以从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请求流:
参考链接
有关详细信息,请参阅
还有姚有没有尝试过在网上搜索很长时间,但很神奇