Asp.net-Mvc-4

MVC4和頁面生命週期?

  • May 4, 2016

ASP.NET MVC4 沒有像正常 aspx 頁面那樣的頁面生命週期。如何在 MVC4 中使用 preinit、init、prerender?

MVC4 中是否有任何類型的生命週期?

不,本身沒有頁面生命週期(因為沒有“頁面”對象),但是有一個請求處理管道,通常是這樣的:

  1. 傳入的請求由System.Web.Routing.UrlRoutingModule使用請求 url 將請求映射到控制器操作方法來獲取。
  2. 適當的控制器被實例化
  3. 可能會發生模型綁定和輸入驗證
  4. 呼叫控制器和/或動作上的動作過濾器的OnActionExecuting-methods
  5. 動作方法本身被呼叫
  6. 呼叫動作過濾器的任何OnActionExecuted和- 方法OnResultExecuting
  7. ActionResultaction 方法(通常是ViewResult呈現 HTML)返回的 被執行。
  8. OnResultExecuted呼叫動作過濾器的任何方法。

上面的列表只是一個粗略的草圖:

路由:傳入請求到 MVC 控制器的操作方法的映射本身就是一個故事。有關詳細資訊,請參閱MSDN 上的 ASP.NET 路由。

動作過濾器:有用於授權、輸出記憶體、錯誤處理等的動作過濾器,所有這些都在特定時間執行。這次請參閱MSDN 上的 ASP.NET MVC 中的過濾以獲取更多資訊。

ASP.NET:當然還有所有傳統的 ASP.NET 應用程序事件。因此,像 good old System.Web.Security.FormsAuthenticationModuleand之類的 HTTP 模組System.Web.Caching.OutputCacheModule可能仍然參與請求的處理。

如果您想真正深入了解細節,請從CodePlex下載 ASP.NET Web 堆棧的原始碼。您所追求的大部分內容都將在System.Web.Mvc.ControllerActionInvoker課堂上進行,儘管名字很嚇人,但並不難理解。

請參閱 Dejan 的答案,以獲得一個很好的圖表的連結,該圖表總結了大部分內容。

引用自:https://stackoverflow.com/questions/17953756