Filtre de acțiune în MVC [Tipuri de filtre cu exemple]
Publicat: 2021-03-04Cuprins
ASP.NET MVC – Filtre de acțiune
În filtrele MVC (Model-View-Controller), folosim logica suplimentară conform diferitelor funcționalități sau logica din procesarea cererilor MVC Framework.
Filtrele MVC implementează un proces pentru diferite niveluri: de exemplu, autorizarea, înregistrarea în jurnal și stocarea în cache.
Putem considera un filtru de acțiune ca un atribut pe care îl putem implementa unei metode de acțiune a controlorului pentru a face modificarea conform logicii de afaceri.
Putem lua în considerare filtrele MVC din sistem. Atributul este definit ca clasa, metoda, proprietățile și câmpurile.
Citește și: Proiect MVC
Cadrul ASP.NET MVC încorporează diverse filtre de acțiune
Autorizare : acest filtru de acțiuni are capacitatea de a restricționa accesul la un anumit rol de utilizator.
OutputCache : este filtrul de acțiune și memorează în cache rezultatul unei metode de acțiune a controlerului în timpul definit.
HandleError : Când se execută această acțiune a controlerului, se ocupă de erorile dintr-un anumit scenariu dacă codul eșuează. Vă permite să vă creați filtrul de acțiune personalizat.
De exemplu, putem crea un filtru de acțiune personalizat pentru a executa un sistem de autentificare personalizat.
Sursă
Conducta de filtrare în fluxul ciclului de viață de cerere și răspuns:
Sursă
Filtrul oferă două categorii de implementare a logicii în cod, realizează diferite definiții de interfață-
- Sincron
- Asincron
Filtrele sincrone
În filtrul de sincronizare, putem rula codul înainte și după pipeline atunci când procesează; îl putem considera metode de acțiune OnStageExecuting și OnStageExecuted .
Filtre asincrone
Filtrele asincrone sunt descrise cu o singură metodă, care are metodele de
- OnActionExecuting
- OnActionExecuted
- OnActionExecutionAsync
Fragmentele de cod de mai jos sunt tipul de declarație
clasă publică TimestampFilter: IActionFilter, IAsyncActionFilter
{
public void OnActionExecuting (context ActionExecutingContext)
{
context.ActionDescriptor.RouteValues[“timestamp”] = DateTime.Now.ToString();
}
public void OnActionExecuted (context ActionExecutedContext)
{
var ts = DateTime.Parse(context.ActionDescriptor. RouteValues[„timestamp”]).AddHours(1).ToString();
context.HttpContext.Response.Headers[“X-EXPIRY-TIMESTAMP”] = ts;
}
asincron public Task OnActionExecutionAsync (context ActionExecutingContext, ActionExecutionDelegate în continuare)
{
this.OnActionExecuting(context);
var resultContext = await next();
this.OnActionExecuted(resultContext);
}
}
Tipuri de filtre de acțiune în MVC
Cadrul ASP.NET MVC menține diferite filtre:
Filtre de autorizare: execută atributul IAuthorisationFilter.
Filtre de acțiune: Efectuează atributul IActionFilter.
Filtre de rezultate : executați atributul IResultFilter.
Filtre de excepție: execută atributul IExceptionFilter.
Filtre de autorizare
Îl putem folosi pentru accesibilitatea utilizatorului și îl putem declara înainte de implementarea metodei de acțiune în controler.
Filtrul de autorizare activează două atribute încorporate, de exemplu: Authorize și AllowAnonymous
Le putem folosi în logica personalizată în cod, conform cerințelor noastre de afaceri.
Fragmentul de cod de mai jos este un exemplu de filtre de autorizare
[Autoriza]
Public ActionResult SecureMethod()
{
return View();
}
[AllowAnonymous]
Public ActionResult NonSecureMethod()
{
return View();
}
Public ActionResult SecureMethod()
{
return View();
}
Filtre de acțiune
Putem descrie filtrele de acțiune înainte de a efectua Metoda de acțiune și după metoda de acțiune.
Are două tipuri de metode.
- OnActionExecuted
- OnActionExecuting
Fragmentul de cod de mai jos este un exemplu de filtre de acțiune
folosind System;
folosind System.Collections.Generic;
folosind System.Linq;
folosind System.Web;
folosind System.Web.Mvc;
spatiu de nume TutorialActionFilter.Filters
{
clasă publică Myactionfilter : FilterAttribute,IActionFilter
{
public void OnActionExecuted (ActionExecutedContext filterContext)
{
dacă (filterContext.HttpContext.Session[„UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Home/Index”);
}
altfel
{
filterContext.Result = newRedirectResult(“/Login /Login”);
}
}
public void OnActionExecuting (ActionExecutingContext filterContext)
{
dacă (filterContext.HttpContext.Session[„UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Home/ Index”);
}
altfel
{
filterContext.Result = newRedirectResult(“/Login /Login”);
}
}
}
}
[TutorialActionFilter]
[AcceptVerbs(HttpVerbs.Get)]
Public ActionResult GetPerson()
{
Persoană p = Persoană nouă ();
return View(„Persoană”, p);
}
Filtre de rezultate
Putem descrie filtrele de acțiune înainte de a efectua Metoda de acțiune și după ce a fost efectuată Metoda de acțiune.
Are două tipuri de metode.
- OnResultExecuted
- OnResultExecuting
Fragmentul de cod de mai jos este un exemplu de filtre de rezultate
folosind System;
folosind System.Collections.Generic;
folosind System.Linq;
folosind System.Web;
folosind System.Web.Mvc;
spatiu de nume ResultFilter.Filters
{
clasă publică MyResultfilter : FilterAttribute,IResultFilter
{
public void OnResultExecuted(ResultExecutedContext filterContext)
{
dacă (filterContext.HttpContext.Session[„UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Home/Contact”);
}
altfel
{
filterContext.Result = newRedirectResult(“/Login/Login”);
}
}
public void OnResultExecuting (ResultExecutingContext filterContext)
{
dacă (filterContext.HttpContext.Session[„UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Home/Contact”);
}
altfel
{
filterContext.Result = newRedirectResult(“/Login/Login”);
}
}
}
}
[MyResultfilter]
[AcceptVerbs(HttpVerbs.Get)]
Public ActionResult GetPerson()
{
Person p = newPerson ();
return View(„Persoană”, p);
}
Filtre de excepții
Le putem folosi atunci când un controler sau o metodă de acțiune aruncă excepția.
Acest filtru de excepții este important pentru a capta excepția.
Mai jos este fragmentul de cod pentru a utiliza filtrele de excepții
folosind System;
folosind System.Collections.Generic;
folosind System.Linq;
folosind System.Web;
folosind System.Web.Mvc;
namespace ExceptionFilter.Filters
{
clasă publică MyExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException (ExceptionContext filterContext)
{
filterContext.Controller.ViewBag.onExceptionError = „Filtru ExceptionFilter apelat”;
filterContext.HttpContext.Response.Write(„Filtru ExceptionFilter numit”);
}
}
}
[MyExceptionFilter]
Clasa publică HomeController : Controler
{
[AcceptVerbs(HttpVerbs.Get)]
Public ActionResult GetPerson()
{
Person p = newPerson ();
return View(„Persoană”, p);
}
}
Citiți și: Proiectul Java MVC
Învață cursuri de software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.
Concluzie
Sperăm că acest articol v-a ajutat să înțelegeți filtrele de acțiune din MVC.
Dacă sunteți interesat să aflați mai multe despre dezvoltarea full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea software full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, peste 9 proiecte și misiuni, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.
Ce sunt structurile de date în programare?
Structurile de date sunt modul în care aranjam datele într-un program. Cele mai importante două structuri de date sunt matricele și listele legate. Matricele sunt cea mai familiară structură de date și este cea mai ușor de înțeles. Matricele sunt în principiu liste numerotate de articole înrudite. Sunt simplu de înțeles și de utilizat, dar nu sunt foarte eficiente atunci când se lucrează cu cantități mari de date. Listele legate sunt mai complexe, dar pot fi foarte eficiente dacă sunt utilizate corespunzător. Sunt alegeri bune atunci când va trebui să adăugați sau să eliminați articole în mijlocul unei liste mari sau când trebuie să căutați articole într-o listă mare.
Care sunt diferențele dintre lista legată și matrice?
În matrice, un index este folosit pentru a accesa un element. Elementele din matrice sunt organizate în ordine secvențială, ceea ce facilitează accesul și modificarea elementelor dacă se folosește un index. Array are, de asemenea, o dimensiune fixă. Elementele sunt alocate în momentul creării. În lista legată, un pointer este folosit pentru a accesa un element. Elementele unei liste legate nu sunt neapărat stocate în ordine secvențială. O listă legată are o dimensiune necunoscută deoarece poate conține noduri în momentul creării ei. Un pointer este folosit pentru a accesa un element, astfel încât alocarea memoriei este mai ușoară.
Ce este un pointer în C?
Un pointer este un tip de date în C care stochează adresa oricărei variabile sau funcție. În general, este folosit ca referință la o altă locație de memorie. Un pointer poate deține o adresă de memorie a unui tablou, structură, funcție sau orice alt tip. C folosește pointeri pentru a transmite și a primi valori de la funcții. Pointerii sunt folosiți pentru a aloca dinamic spațiu de memorie.