Suche…


Benutzerdefinierte Aktionsfilter

Wir schreiben benutzerdefinierte Aktionsfilter aus verschiedenen Gründen. Möglicherweise verfügen wir über einen benutzerdefinierten Aktionsfilter zum Protokollieren oder zum Speichern von Daten in der Datenbank vor einer Aktionsausführung. Wir könnten auch eine haben, um Daten aus der Datenbank abzurufen und sie als globale Werte der Anwendung festzulegen.

Um einen benutzerdefinierten Aktionsfilter zu erstellen, müssen wir die folgenden Aufgaben ausführen:

  1. Erstellen Sie eine Klasse
  2. Vererben Sie es von der ActionFilterAttribute-Klasse

Überschreiben Sie mindestens eine der folgenden Methoden:

OnActionExecuting - Diese Methode wird aufgerufen, bevor eine Controller-Aktion ausgeführt wird.

OnActionExecuted - Diese Methode wird aufgerufen, nachdem eine Controller-Aktion ausgeführt wurde.

OnResultExecuting - Diese Methode wird aufgerufen, bevor ein Controller-Aktionsergebnis ausgeführt wird.

OnResultExecuted - Diese Methode wird aufgerufen, nachdem ein Controller-Aktionsergebnis ausgeführt wurde.

Der Filter kann wie in der folgenden Liste gezeigt erstellt werden:

    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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow