C# Language
Filtros de acción
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:
- Crear una clase
- 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);
}
}
}