Что сначала создается в ASP.NET MVC, Action Filters или Controllers? - PullRequest
4 голосов
/ 29 мая 2009

Запускаются ли атрибуты фильтра действий MVC до создания экземпляра контроллера? У меня есть свойство контроллера, которое я хотел бы проверить из ActionFilter. Возможно ли это?

Ответы [ 3 ]

4 голосов
/ 29 мая 2009

Согласно книге Professional ASP.NET MVC 1.0, ActionFilters запускаются после создания экземпляра контроллера. Ко времени OnActionExecuting (первый метод, вызванный ActionFilter), контекст Контроллера доступен.

2 голосов
/ 29 мая 2009

Контроллер будет создан до того, как сработают события OnActionExecuted и OnActionExecuting фильтра действий. Также вы можете получить доступ к контроллеру через параметр filterContext, который передается обработчикам событий.

public class TestActionAttribute : FilterAttribute, IActionFilter
{
    #region IActionFilter Members

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var controller = filterContext.Controller;
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var controller = filterContext.Controller;
    }

    #endregion
}
1 голос
/ 29 мая 2009

Абстрактный класс System.Web.Mvc.ActionFilterAttribute (производный от этого класса собственный ActionFilter) имеет 4 метода OnXXX:

  • OnActionExecuting
  • OnActionExecuted
  • OnResultExecuting
  • OnResultExecuted

Я думаю, что в OnActionExecuting вы можете проверить свой контроллер:

YourController controller = filterContext.Controller as YourController
if(controller != null)
{
    // check your controller
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...