2013-11-21 31 views
34

OnActionExecuted和OnResultExecuting之間的區別是什麼?一旦行動被處理或者在這兩種方法之間發生了什麼事情,他們是否會一個接一個地被解僱?的觀點一樣,引擎的初始化,...OnActionExecuted和OnResultExecuting之間的區別

+0

查看http://stackoverflow.com/questions/10423955/when-exactly-do-onresultexecuted-and-onresultexecuting-fire – Loetn

回答

31

他們有不同的上下文。

OnActionExecuted有一個ActionExecutedContext其中您可以查看該操作產生的結果。您還可以查看該操作是否遇到異常,並查看是否處理了該異常。

OnResultExecuting有一個ResultExecutingContext。這個方法在調用ActionResult實例之前被調用。您可以檢查該方法的結果,並可能取消執行結果。這通常會導致狀態代碼爲200的空白響應。(您不能在OnActionExecuted方法中執行此操作)。

0

他們一個接一個地打電話。

不可能有任何初始化,因爲你正在執行可能不被渲染視圖中的ActionResult - ActionResults可以自由地做任何他們選擇:返回JSON,返回一個文件,發出一個重定向等

+0

之後執行的。因此,當返回類似重定向的內容時,onresultexecuting不會被調用? –

+0

如果你已經設置了運行OnActionExecuted的代碼,這會在OnActionExecuted之後和OnResultExecuting之前運行,對吧?所以不一定是一個接一個。 – Matthew