2014-03-05 24 views
3

請解釋IActionFilter和IResultFilter的區別。我明白OnActionExecuting發生在執行一個動作方法之前,並且OnActionExecuted發生在一個動作方法執行之後,並且更進一步,它意味着要執行一個動作方法。我不明白,在IResultFilter的情況下,這意味着要執行的操作結果。IActionFilter vs IResultFilter

回答

4

動作過濾器包含在執行控制器動作之前和之後執行的邏輯。例如,您可以使用操作過濾器來修改控制器操作返回的視圖數據。

結果過濾器(或IResultFilters)包含執行視圖結果之前和之後執行的邏輯。例如,您可能想要在將視圖呈現給瀏覽器之前修改視圖結果。

Understanding Action Filters.

爲了澄清什麼的ViewResult確實讓我們看看ViewResultBase執行:

 viewEngineResult = this.FindView(context); 
     this.View = viewEngineResult.View; 

     TextWriter output = context.HttpContext.Response.Output; 
     this.View.Render(new ViewContext(context, this.View, this.ViewData, this.TempData, output), output); 

你會看到它首先找到的觀點,然後呈現視圖的響應輸出流。

+0

但是,特別是對於要執行的視圖結果意味着什麼?這是否意味着View從控制器被調用,導致View被執行,或者什麼? – Scott

+1

ViewResult,將指定視圖呈現給響應流 – shenku

+0

請參閱上面的我的編輯。 – shenku

相關問題