MVC4和页面生命周期?

时间:2013-07-30 17:40:45

标签: asp.net-mvc-4

ASP.NET MVC4没有像常规aspx页面那样的页面生命周期。如何在MVC4中使用preinit,init,prerender?

MVC4中是否有任何类型的生命周期?

3 个答案:

答案 0 :(得分:10)

不,本身没有页面生命周期(因为没有'page'对象),但是有一个请求处理管道,通常是这样的:

  1. System.Web.Routing.UrlRoutingModule使用请求网址将请求映射到控制器操作方法来接收传入请求。
  2. 实例化相应的控制器
  3. 可能会发生模型绑定和输入验证
  4. 调用控制器和/或操作的OnActionExecuting - 操作方法过滤器
  5. 调用操作方法本身
  6. 调用任何OnActionExecutedOnResultExecuting - 操作方法过滤器
  7. 执行操作方法返回的ActionResult(通常是呈现HTML的ViewResult)。
  8. 调用任何OnResultExecuted - 操作方法过滤器。
  9. 上面的列表只是一个草图:

    路由: 传入请求到MVC控制器的动作方法的映射本身就是一个故事。有关详细信息,请参阅ASP.NET Routing on MSDN

    动作过滤器: 有用于授权,输出缓存,错误处理等的动作过滤器,所有这些都在特定时间运行。这一次请参阅Filtering in ASP.NET MVC on MSDN了解更多信息。

    ASP.NET : 而且,当然还有traditional ASP.NET application events。因此,像旧的System.Web.Security.FormsAuthenticationModuleSystem.Web.Caching.OutputCacheModule这样的HTTP模块仍然可以参与处理请求。

    如果您想深入了解详细信息,请从CodePlex下载ASP.NET Web堆栈的源代码。你所追求的大部分内容都会出现在System.Web.Mvc.ControllerActionInvoker课程中,尽管名字太可怕,但并不难以理解。

    请参阅Dejan的回答,找到一个很好的图表的链接,总结了很多。

答案 1 :(得分:2)

  1. 您的网络浏览器在服务器上发送HTTP请求
  2. 请求通过HTTP路由more info here
  3. 这些路线通常列在Global.asax.cs档案中,当我们的请求与我们前进的其中一条地图路线相匹配时
  4. 路由处理程序,这里我们创建MVC请求处理程序,我们现在知道将使用哪个控制器并执行操作
  5. 然后我们到达控制器,我们称之为服务并创建模型
  6. 我们将此模型传递给查看引擎(例如RAzor)
  7. 然后在“响应”
  8. 中呈现并输出视图

    可以在http://msdn.microsoft.com/en-us/library/dd381612(v=vs.98).aspx

    上找到msdn文档

答案 2 :(得分:0)

你可以查看这篇文章“Lifecycle of an ASP.NET MVC 5 Application”它大约一周前发布了。这也是一个PDF file下载。