Aktionsfilter in MVC [Filtertypen mit Beispielen]

Veröffentlicht: 2021-03-04

Inhaltsverzeichnis

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.

  1. Synchron
  2. 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.

  1. OnActionExecuted
  2. 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.

  1. OnResultExecuted
  2. 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.