2010-03-25 179 views
0

假設我有一個名爲「HomeController」的控制器,它繼承自Mvc.Controller。另外說我寫了控制器的構造函數和一些過濾器的一些操作。ASP.NET MVC Controller中的執行順序是什麼?

Public Class ClientController 
    Inherits System.Web.Mvc.Controller 

    Public Sub New() 
     ''Some code 
    End Sub 

    <SomeActionFilter()> _ 
    Function Index() As ActionResult 
     Return View() 
    End Function 
End Class 

我的問題是:

  1. 是什麼構造,過濾器,動作的執行順序?
  2. 如果我不想通過檢查某些條件來運行代碼,我可以爲構造函數過濾嗎?

回答

2

構造函數將先行。取決於篩選器或操作方法第二次執行的篩選器的類型。看到這裏的filter types

過濾器不攔截構造函數。如果要控制Controller的構造函數調用,則需要通過實施IControllerFactory(或DefaultControllerFactory)來構建自定義控制器工廠,並在應用程序啓動時將其註冊爲ControllerBuidler,例如: ControllerBuilder.Current.SetControllerFactory(typeof(MyControllerFactory))

如果我不想通過檢查一些條件來運行代碼 ?

難道你不能直接在構造函數中編寫代碼(例如基礎控制器中的檢查條件以重用)嗎?爲什麼在這種情況下需要過濾器?

相關問題