Поиск…


Пользовательские фильтры действий

Мы пишем фильтры пользовательских действий по различным причинам. У нас может быть настраиваемый фильтр действий для ведения журнала или для сохранения данных в базе данных до выполнения любого действия. У нас также может быть один для получения данных из базы данных и установки его в качестве глобальных значений приложения.

Чтобы создать настраиваемый фильтр действий, нам необходимо выполнить следующие задачи:

  1. Создать класс
  2. Наследовать его из класса 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);
            }
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow