C# Language
Фильтры действий
Поиск…
Пользовательские фильтры действий
Мы пишем фильтры пользовательских действий по различным причинам. У нас может быть настраиваемый фильтр действий для ведения журнала или для сохранения данных в базе данных до выполнения любого действия. У нас также может быть один для получения данных из базы данных и установки его в качестве глобальных значений приложения.
Чтобы создать настраиваемый фильтр действий, нам необходимо выполнить следующие задачи:
- Создать класс
- Наследовать его из класса ActionFilterAttribute
Переопределите хотя бы один из следующих способов:
OnActionExecuting - этот метод вызывается перед выполнением действия контроллера.
OnActionExecuted - этот метод вызывается после выполнения действия контроллера.
OnResultExecuting - этот метод вызывается до выполнения результата действия контроллера.
OnResultExecuted - этот метод вызывается после выполнения результата действия контроллера.
Фильтр может быть создан, как показано в листинге ниже:
using System;
using System.Diagnostics;
using System.Web.Mvc;
namespace WebApplication1
{
public class MyFirstCustomFilter : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
//You may fetch data from database here
filterContext.Controller.ViewBag.GreetMesssage = "Hello Foo";
base.OnResultExecuting(filterContext);
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var controllerName = filterContext.RouteData.Values["controller"];
var actionName = filterContext.RouteData.Values["action"];
var message = String.Format("{0} controller:{1} action:{2}", "onactionexecuting", controllerName, actionName);
Debug.WriteLine(message, "Action Filter Log");
base.OnActionExecuting(filterContext);
}
}
}