Buscar..


Filtros de acción personalizados

Escribimos filtros de acción personalizados por varias razones. Es posible que tengamos un filtro de acción personalizado para el registro o para guardar datos en la base de datos antes de cualquier ejecución de acción. También podríamos tener uno para obtener datos de la base de datos y establecerlos como los valores globales de la aplicación.

Para crear un filtro de acción personalizado, necesitamos realizar las siguientes tareas:

  1. Crear una clase
  2. Heredarlo de la clase ActionFilterAttribute

Reemplace al menos uno de los siguientes métodos:

OnActionExecuting : este método se llama antes de que se ejecute una acción del controlador.

OnActionExecuted : este método se llama después de ejecutar una acción del controlador.

OnResultExecuting : este método se llama antes de que se ejecute un resultado de acción del controlador.

OnResultExecuted : este método se llama después de que se ejecuta un resultado de acción del controlador.

El filtro se puede crear como se muestra en el listado a continuación:

    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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow