Filtre de acțiune în MVC [Tipuri de filtre cu exemple]

Publicat: 2021-03-04

Cuprins

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ță-

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

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

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