2010-03-25 3 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)) при запуске приложения.

Если я не хочу запускать код в нем , проверяя некоторые условия?

Не можете ли вы записать этот код непосредственно в конструкторе (например, условие проверки в базовом контроллере для повторного использования)? Зачем вам нужен фильтр в этом случае?

Смежные вопросы