【发布时间】:2016-05-04 14:23:04
【问题描述】:
ASP.NET MVC4 没有像常规 aspx 页面那样的页面生命周期。在MVC4中如何使用preinit、init、prerender?
MVC4 中是否存在任何类型的生命周期?
【问题讨论】:
-
您为什么要这样做?你想达到什么目的?
标签: asp.net-mvc-4
ASP.NET MVC4 没有像常规 aspx 页面那样的页面生命周期。在MVC4中如何使用preinit、init、prerender?
MVC4 中是否存在任何类型的生命周期?
【问题讨论】:
标签: asp.net-mvc-4
不,没有页面生命周期本身(因为没有“页面”对象),但是有一个请求处理管道,通常是这样的:
System.Web.Routing.UrlRoutingModule 获取,它使用请求 URL 将请求映射到控制器操作方法。OnActionExecuting-方法OnActionExecuted 和OnResultExecuting-操作过滤器方法ActionResult(通常是呈现 HTML 的ViewResult)被执行。OnResultExecuted-操作过滤器方法都会被调用。上面的列表只是一个粗略的草图:
路由: 传入请求到 MVC 控制器的操作方法的映射本身就是一个故事。请参阅ASP.NET Routing on MSDN 了解更多信息。
动作过滤器: 有用于授权、输出缓存、错误处理等的操作过滤器,所有这些都在特定时间运行。这次见Filtering in ASP.NET MVC on MSDN了解更多信息。
ASP.NET:
而且,当然还有traditional ASP.NET application events。因此,像古老的System.Web.Security.FormsAuthenticationModule 和System.Web.Caching.OutputCacheModule 这样的HTTP 模块可能仍会参与请求的处理。
如果您想真正深入了解细节,请从CodePlex 下载 ASP.NET Web 堆栈的源代码。您所追求的大部分内容都在 System.Web.Mvc.ControllerActionInvoker 类中,尽管名称很吓人,但并不难理解。
请参阅 Dejan 的回答,以获得一个很好的图表的链接,该图表总结了大部分内容。
【讨论】:
Global.asax.cs 文件中Msdn 文档可以在http://msdn.microsoft.com/en-us/library/dd381612(v=vs.98).aspx找到
【讨论】:
您可以查看这篇文章“Lifecycle of an ASP.NET MVC 5 Application”,它大约在一周前发布。这里还有一个PDF file可以下载。
【讨论】: