Zoeken…


Aangepaste actiefilters

We schrijven aangepaste actiefilters om verschillende redenen. We hebben mogelijk een aangepast actiefilter voor logboekregistratie of voor het opslaan van gegevens in de database voordat een actie wordt uitgevoerd. We kunnen er ook een hebben om gegevens uit de database op te halen en in te stellen als de globale waarden van de toepassing.

Om een aangepast actiefilter te maken, moeten we de volgende taken uitvoeren:

  1. Creëer een klas
  2. Neem het over van de ActionFilterAttribute-klasse

Overschrijf ten minste een van de volgende methoden:

OnActionExecuting - Deze methode wordt aangeroepen voordat een controlleractie wordt uitgevoerd.

OnActionExecuted - Deze methode wordt aangeroepen nadat een controlleractie is uitgevoerd.

OnResultExecuting - Deze methode wordt aangeroepen voordat een controlleractie-resultaat wordt uitgevoerd.

OnResultExecuted - Deze methode wordt aangeroepen nadat een controlleractie-resultaat is uitgevoerd.

Het filter kan worden gemaakt zoals weergegeven in de onderstaande lijst:

    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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow