ASP.NET MVC4 没有像常规 aspx 页面那样的页面生命周期。如何在 MVC4 中使用 preinit、init、prerender?
MVC4 中是否有任何类型的生命周期?
ASP.NET MVC4 没有像常规 aspx 页面那样的页面生命周期。如何在 MVC4 中使用 preinit、init、prerender?
MVC4 中是否有任何类型的生命周期?
不,本身没有页面生命周期(因为没有“页面”对象),但是有一个请求处理管道,通常是这样的:
System.Web.Routing.UrlRoutingModule
使用请求 url 将请求映射到控制器操作方法来获取。OnActionExecuting
-methodsOnActionExecuted
和- 方法OnResultExecuting
ActionResult
action 方法(通常是ViewResult
呈现 HTML)返回的 被执行。OnResultExecuted
调用动作过滤器的任何方法。上面的列表只是一个粗略的草图:
路由:传入请求到 MVC 控制器的操作方法的映射本身就是一个故事。有关详细信息,请参阅MSDN 上的 ASP.NET 路由。
动作过滤器:有用于授权、输出缓存、错误处理等的动作过滤器,所有这些都在特定时间运行。这次请参阅MSDN 上的 ASP.NET MVC 中的过滤以获取更多信息。
ASP.NET:当然还有所有传统的 ASP.NET 应用程序事件。因此,像 good old System.Web.Security.FormsAuthenticationModule
and之类的 HTTP 模块System.Web.Caching.OutputCacheModule
可能仍然参与请求的处理。
如果您想真正深入了解细节,请从CodePlex下载 ASP.NET Web 堆栈的源代码。您所追求的大部分内容都将在System.Web.Mvc.ControllerActionInvoker
课堂上进行,尽管名字很吓人,但并不难理解。
请参阅 Dejan 的答案,以获得一个很好的图表的链接,该图表总结了大部分内容。
Global.asax.cs
文件中,当我们的请求与我们转发的这些地图路线之一匹配时可以在http://msdn.microsoft.com/en-us/library/dd381612(v=vs.98).aspx上找到 Msdn 文档
您可以查看这篇文章“ ASP.NET MVC 5 应用程序的生命周期”,它大约在一周前发布。这里还有一个PDF 文件可供下载。