Aktionsfilter in MVC [Filtertypen mit Beispielen]
Veröffentlicht: 2021-03-04Inhaltsverzeichnis
ASP.NET MVC – Aktionsfilter
In MVC-Filtern (Model-View-Controller) verwenden wir die zusätzliche Logik gemäß den verschiedenen Funktionalitäten oder Logiken aus der MVC-Framework-Anforderungsverarbeitung.
MVC-Filter implementieren einen Prozess für verschiedene Ebenen: zum Beispiel Autorisierung, Protokollierung und Zwischenspeicherung.
Wir können einen Aktionsfilter als ein Attribut betrachten, das wir in eine Controller-Aktionsmethode implementieren können, um die Änderung gemäß der Geschäftslogik vorzunehmen.
Wir können MVC-Filter aus dem System berücksichtigen. Das Attribut wird als Klasse, Methode, Eigenschaften und Felder definiert.
Lesen Sie auch: MVC-Projekt
Das ASP.NET MVC Framework enthält verschiedene Aktionsfilter
Autorisieren : Dieser Aktionsfilter hat die Fähigkeit, den Zugriff auf eine bestimmte Benutzerrolle zu beschränken.
OutputCache : Dies ist der Aktionsfilter und speichert das Ergebnis einer Controller-Aktionsmethode in der definierten Zeit.
HandleError : Wenn diese Controlleraktion ausgeführt wird, behandelt sie die Fehler in einem bestimmten Szenario, wenn der Code fehlschlägt. Damit können Sie Ihren benutzerdefinierten Aktionsfilter erstellen.
Beispielsweise können wir einen benutzerdefinierten Aktionsfilter erstellen, um ein benutzerdefiniertes Authentifizierungssystem auszuführen.
Quelle
Filterpipeline im Ablauf des Anforderungs- und Antwortlebenszyklus:
Quelle
Der Filter bietet zwei Kategorien zum Implementieren der Logik im Code, er führt verschiedene Schnittstellendefinitionen durch.
- Synchron
- Asynchron
Die synchronen Filter
Im Synchronisierungsfilter können wir den Code bei der Verarbeitung vor und nach der Pipeline ausführen. wir können es als OnStageExecuting- und OnStageExecuted- Aktionsmethoden betrachten.
Asynchrone Filter
Asynchrone Filter werden mit einer einzigen Methode beschrieben, die die Methoden von hat
- OnActionExecuting
- OnActionExecuted
- OnActionExecutionAsync
Die folgenden Codeausschnitte sind die Art der Deklaration
öffentliche Klasse TimestampFilter : IActionFilter, IAsyncActionFilter
{
public void OnActionExecuting (ActionExecutingContext-Kontext)
{
context.ActionDescriptor.RouteValues["timestamp"] = DateTime.Now.ToString();
}
public void OnActionExecuted (ActionExecutedContext-Kontext)
{
var ts = DateTime.Parse(context.ActionDescriptor. RouteValues[„timestamp“]).AddHours(1).ToString();
context.HttpContext.Response.Headers[„X-EXPIRY-TIMESTAMP“] = ts;
}
öffentliche asynchrone Aufgabe OnActionExecutionAsync (ActionExecutingContext-Kontext, ActionExecutionDelegate next)
{
this.OnActionExecuting (Kontext);
var resultContext = warte auf nächstes ();
this.OnActionExecuted (resultContext);
}
}
Arten von Aktionsfiltern in MVC
Das ASP.NET MVC-Framework verwaltet verschiedene Filter:
Berechtigungsfilter: Führt das IAuthorisationFilter-Attribut aus.
Aktionsfilter: Führt das IActionFilter-Attribut aus.
Ergebnisfilter : Führen Sie das Attribut IResultFilter aus.
Ausnahmefilter: Führt das IExceptionFilter-Attribut aus.
Autorisierungsfilter
Wir können es für die Zugänglichkeit des Benutzers verwenden und wir können es vor der Implementierung der Aktionsmethode im Controller deklarieren.
Der Autorisierungsfilter aktiviert zwei integrierte Attribute, zum Beispiel: Authorize und AllowAnonymous
Wir können diese in benutzerdefinierter Logik im Code gemäß unseren Geschäftsanforderungen verwenden.
Das folgende Code-Snippet ist ein Beispiel für Autorisierungsfilter
[Autorisieren]
öffentliches ActionResult SecureMethod()
{
Rückgabeansicht ();
}
[Anonym zulassen]
public ActionResult NonSecureMethod()
{
Rückgabeansicht ();
}
öffentliches ActionResult SecureMethod()
{
Rückgabeansicht ();
}
Aktionsfilter
Wir können die Aktionsfilter vor dem Ausführen der Aktionsmethode und nach der Aktionsmethode beschreiben.
Es enthält zwei Arten von Methoden.
- OnActionExecuted
- OnActionExecuting
Das folgende Code-Snippet ist das Beispiel für Aktionsfilter
mit System;
mit System.Collections.Generic;
mit System.Linq;
mit System.Web;
mit System.Web.Mvc;
Namespace TutorialActionFilter.Filters
{
öffentliche Klasse Myactionfilter : FilterAttribute,IActionFilter
{
public void OnActionExecuted (ActionExecutedContext filterContext)
{
if (filterContext.HttpContext.Session["Benutzer-ID"] != null)
{
filterContext.Result = newRedirectResult(“/Home/Index“);
}
anders
{
filterContext.Result = newRedirectResult(“/Login /Login“);
}
}
public void OnActionExecuting (ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session["Benutzer-ID"] != null)
{
filterContext.Result = newRedirectResult(“/Home/Index”);
}
anders
{
filterContext.Result = newRedirectResult(“/Login /Login“);
}
}
}
}
[TutorialAktionsfilter]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Person p = neue Person ();
return View("Person",p);
}
Ergebnisfilter
Wir können die Aktionsfilter beschreiben, bevor die Aktionsmethode ausgeführt wird und nachdem die Aktionsmethode ausgeführt wurde.
Es enthält zwei Arten von Methoden.
- OnResultExecuted
- OnResultExecuting
Das folgende Code-Snippet ist ein Beispiel für Ergebnisfilter
mit System;
mit System.Collections.Generic;
mit System.Linq;
mit System.Web;
mit System.Web.Mvc;
Namespace ResultFilter.Filters
{
öffentliche Klasse MyResultfilter : FilterAttribute,IResultFilter
{
public void OnResultExecuted(ResultExecutedContext filterContext)
{
if (filterContext.HttpContext.Session["Benutzer-ID"] != null)
{
filterContext.Result = newRedirectResult(“/Home/Contact”);
}
anders
{
filterContext.Result = newRedirectResult(“/Login/Login”);
}
}
public void OnResultExecuting (ResultExecutingContext filterContext)
{
if (filterContext.HttpContext.Session["Benutzer-ID"] != null)
{
filterContext.Result = newRedirectResult(“/Home/Contact”);
}
anders
{
filterContext.Result = newRedirectResult(“/Login/Login”);
}
}
}
}
[MeinErgebnisfilter]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Person p = neuePerson ();
return View("Person",p);
}
Ausnahmefilter
Wir können diese verwenden, wenn ein Controller oder eine Aktionsmethode die Ausnahme auslöst.
Dieser Ausnahmefilter ist wichtig, um die Ausnahme abzufangen.
Nachfolgend finden Sie das Code-Snippet zur Verwendung von Ausnahmefiltern
mit System;
mit System.Collections.Generic;
mit System.Linq;
mit System.Web;
mit System.Web.Mvc;
Namespace ExceptionFilter.Filters
{
öffentliche Klasse MyExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException (Ausnahmekontext filterContext)
{
filterContext.Controller.ViewBag.onExceptionError = „ExceptionFilter-Filter aufgerufen“;
filterContext.HttpContext.Response.Write("ExceptionFilter Filter aufgerufen");
}
}
}
[MeinAusnahmefilter]
öffentliche Klasse HomeController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Person p = neuePerson ();
return View("Person",p);
}
}
Lesen Sie auch: Java MVC-Projekt
Lernen Sie Softwarekurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Fazit
Wir hoffen, dass dieser Artikel Ihnen beim Verständnis der Aktionsfilter in MVC geholfen hat.
Wenn Sie mehr über Full-Stack-Entwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen, mehr als 9 Projekte und mehr bietet Aufgaben, IIIT-B-Alumni-Status, praktische praktische Schlusssteinprojekte und Arbeitsunterstützung bei Top-Unternehmen.
Was sind Datenstrukturen in der Programmierung?
Datenstrukturen sind die Art und Weise, wie wir Daten in einem Programm anordnen. Die beiden wichtigsten Datenstrukturen sind Arrays und verkettete Listen. Arrays sind die bekannteste Datenstruktur und am einfachsten zu verstehen. Arrays sind im Grunde nummerierte Listen verwandter Elemente. Sie sind einfach zu verstehen und zu verwenden, aber bei der Arbeit mit großen Datenmengen nicht sehr effizient. Verkettete Listen sind komplexer, aber sie können sehr effizient sein, wenn sie richtig verwendet werden. Sie sind eine gute Wahl, wenn Sie Elemente in der Mitte einer großen Liste hinzufügen oder entfernen müssen oder wenn Sie in einer großen Liste nach Elementen suchen müssen.
Was sind die Unterschiede zwischen verknüpften Listen und Arrays?
In Arrays wird ein Index verwendet, um auf ein Element zuzugreifen. Elemente im Array sind in sequenzieller Reihenfolge organisiert, was den Zugriff und die Änderung von Elementen erleichtert, wenn ein Index verwendet wird. Array hat auch eine feste Größe. Elemente werden zum Zeitpunkt ihrer Erstellung zugewiesen. In einer verketteten Liste wird ein Zeiger verwendet, um auf ein Element zuzugreifen. Elemente einer verketteten Liste werden nicht notwendigerweise in sequentieller Reihenfolge gespeichert. Eine verknüpfte Liste hat eine unbekannte Größe, da sie zum Zeitpunkt ihrer Erstellung Knoten enthalten kann. Ein Zeiger wird verwendet, um auf ein Element zuzugreifen, sodass die Speicherzuweisung einfacher ist.
Was ist ein Zeiger in C?
Ein Zeiger ist ein Datentyp in C, der die Adresse einer beliebigen Variablen oder Funktion speichert. Es wird im Allgemeinen als Verweis auf einen anderen Speicherort verwendet. Ein Zeiger kann eine Speicheradresse eines Arrays, einer Struktur, einer Funktion oder eines beliebigen anderen Typs enthalten. C verwendet Zeiger, um Werte an Funktionen zu übergeben und Werte von Funktionen zu empfangen. Zeiger werden verwendet, um Speicherplatz dynamisch zuzuweisen.