Sök…


Anpassade åtgärdsfilter

Vi skriver anpassade åtgärdsfilter av olika skäl. Vi kan ha ett anpassat åtgärdsfilter för loggning eller för att spara data i databasen innan någon åtgärd utförs. Vi kan också ha en för att hämta data från databasen och ställa in dem som de globala värdena för applikationen.

För att skapa ett anpassat åtgärdsfilter måste vi utföra följande uppgifter:

  1. Skapa en klass
  2. Ärva det från ActionFilterAttribute-klassen

Åsidosätt minst en av följande metoder:

OnActionExecuting - Den här metoden kallas innan en controller-åtgärd utförs.

OnActionExecuted - Den här metoden kallas efter att en kontrolleråtgärd har utförts.

OnResultExecuting - Den här metoden kallas innan en kontrollerhandlingsresultat körs.

OnResultExecuted - Den här metoden kallas efter att en kontrollerhandlingsresultat har utförts.

Filtret kan skapas som visas i listan nedan:

    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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow