Можно ли создать фильтр действий или что-то, что работает до, сам метод действия запускается на контроллере?Выполнение кода до вызова метода контроллера?
Мне нужно это, чтобы проанализировать несколько значений в запросе до запуска действия.
Можно ли создать фильтр действий или что-то, что работает до, сам метод действия запускается на контроллере?Выполнение кода до вызова метода контроллера?
Мне нужно это, чтобы проанализировать несколько значений в запросе до запуска действия.
Вы можете переопределить OnActionExecuting метод в классе контроллера
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
//Your logic is here...
}
Если и не хотите использовать базовый контроллер у также может добавить собственный HttpHandler и зарегистрировать его в web.config. В методе BeginProcessRequest u может анализировать значения.
Вы можете использовать атрибут:
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...
}
http://stackoverflow.com/ Вопросы/1337907/how-to-wire-common-code-from-a-base-controller-in-asp-net-mvc –
И что, если мне нужно сделать это для всех моих контроллеров сразу с одним фрагментом кода? –
Создайте базовый класс для всех ваших контроллеров, как описано в комментарии Артема. –