Выполнение кода до вызова метода контроллера? - PullRequest
2 голосов
/ 27 февраля 2012

Можно ли создать фильтр действий или что-то, что будет запускаться до , сам метод действия запускается на контроллере?

Мне нужно это проанализировать несколько значений в запросе до того, какдействие продолжается.

Ответы [ 3 ]

10 голосов
/ 27 февраля 2012

Вы можете переопределить метод OnActionExecuting в классе контроллера

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
        base.OnActionExecuting(filterContext);
//Your logic is here...
}
5 голосов
/ 27 февраля 2012

Вы можете использовать атрибут:

public class MyFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Your logic here...

        base.OnActionExecuting(filterContext);
    }
}

А если вы хотите применить его ко всем контроллерам, в вашем Global.asax.cs:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new MyFilterAttribute());
}

protected void Application_Start()
{
    // Other code removed for clarity of this example...

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);

    // Other code removed for clarity of this example...
}
0 голосов
/ 27 февраля 2012

Если вы не хотите использовать базовый контроллер, вы также можете добавить собственный HttpHandler и зарегистрировать его в web.config.В методе BeginProcessRequest вы можете анализировать значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...