Filtri di azione in MVC [Tipi di filtri con esempi]
Pubblicato: 2021-03-04Sommario
ASP.NET MVC – Filtri di azione
Nei filtri MVC (Model-View-Controller), utilizziamo la logica aggiuntiva in base alle diverse funzionalità o logiche dell'elaborazione della richiesta MVC Framework.
I filtri MVC implementano un processo per diversi livelli: ad esempio, autorizzazione, registrazione e memorizzazione nella cache.
Possiamo considerare un filtro Action come un attributo che possiamo implementare in un metodo di azione del controller per apportare la modifica secondo la logica aziendale.
Possiamo considerare i filtri MVC dal sistema. L'attributo è definito come classe, metodo, proprietà e campi.
Leggi anche: Progetto MVC
Il framework ASP.NET MVC incorpora vari filtri di azione
Autorizza : questo filtro azione ha la capacità di limitare l'accesso a un ruolo utente specifico.

OutputCache : è il filtro dell'azione e memorizza nella cache il risultato di un metodo di azione del controller nel tempo definito.
HandleError : quando questa azione del controller viene eseguita, gestisce gli errori in uno scenario particolare se il codice non riesce. Ti consente di creare il tuo filtro di azione personalizzato.
Ad esempio, possiamo creare un filtro di azione personalizzato per eseguire un sistema di autenticazione personalizzato.
Fonte
Filtra la pipeline nel flusso del ciclo di vita della richiesta e della risposta:
Fonte
Il filtro fornisce due categorie di implementazione della logica nel codice, esegue diverse definizioni di interfaccia:
- Sincrono
- Asincrono
I filtri sincroni
Nel filtro di sincronizzazione, possiamo eseguire il codice prima e dopo la pipeline durante l'elaborazione; possiamo considerarlo come metodi di azione OnStageExecuting e OnStageExecuted .
Filtri asincroni
I filtri asincroni sono descritti con un unico metodo, che ha i metodi di
- OnActionExecuting
- OnActionExecuted
- OnActionExecutionAsync
I frammenti di codice seguenti sono il tipo di dichiarazione
classe pubblica TimestampFilter : IActionFilter, IAsyncActionFilter
{
public void OnActionExecuting (contesto ActionExecutingContext)
{
context.ActionDescriptor.RouteValues[“timestamp”] = DateTime.Now.ToString();
}
public void OnActionExecuted (contesto ActionExecutedContext)
{
var ts = DateTime.Parse(context.ActionDescriptor. RouteValues["timestamp"]).AddHours(1).ToString();
context.HttpContext.Response.Headers["X-EXPIRY-TIMESTAMP"] = ts;
}
public async Task OnActionExecutionAsync (contesto ActionExecutingContext, ActionExecutionDelegate successivo)
{
this.OnActionExecuting(context);
var resultContext = attendi il prossimo();
this.OnActionExecuted(resultContext);
}
}
Tipi di filtri di azione in MVC
Il framework ASP.NET MVC mantiene vari filtri:
Filtri di autorizzazione: esegue l'attributo IAuthorisationFilter.
Filtri di azione: esegue l'attributo IActionFilter.
Filtri dei risultati : eseguono l'attributo IResultFilter.
Filtri di eccezione: esegue l'attributo IExceptionFilter.
Filtri di autorizzazione
Possiamo usarlo per l'accessibilità dell'utente e possiamo dichiararlo prima dell'implementazione del metodo di azione nel controller.
Il filtro di autorizzazione abilita due attributi integrati, ad esempio: Authorize e AllowAnonymous
Possiamo usarli nella logica personalizzata nel codice secondo i nostri requisiti aziendali.
Il frammento di codice seguente è un esempio di filtri di autorizzazione
[Autorizzare]
public ActionResult SecureMethod()
{
return View();
}
[ConsentiAnonimo]
public ActionResult NonSecureMethod()
{
return View();
}
public ActionResult SecureMethod()
{
return View();
}
Filtri d'azione
Possiamo descrivere i filtri Action prima di eseguire il metodo Action e dopo il metodo action.
Contiene due tipi di metodi.
- OnActionExecuted
- OnActionExecuting
Lo snippet di codice seguente è l'esempio di Action Filters
utilizzando il sistema;
utilizzando System.Collections.Generic;
utilizzando System.Linq;
utilizzando System.Web;
utilizzando System.Web.Mvc;
spazio dei nomi TutorialActionFilter.Filters
{
classe pubblica Myactionfilter : FilterAttribute,IActionFilter
{
public void OnActionExecuted (ActionExecutedContext filterContext)
{
if (filterContext.HttpContext.Session[“UserID”] != null)

{
filterContext.Result = newRedirectResult(“/Home/Indice”);
}
altro
{
filterContext.Result = newRedirectResult(“/Login /Login”);
}
}
public void OnActionExecuting (ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session[“UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Home/Indice”);
}
altro
{
filterContext.Result = newRedirectResult(“/Login /Login”);
}
}
}
}
[TutorialAzioneFiltro]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Persona p = nuova Persona ();
return View("Persona",p);
}
Filtri dei risultati
Possiamo descrivere i filtri di azione prima di eseguire il metodo di azione e dopo che il metodo di azione è stato eseguito.
Contiene due tipi di metodi.
- OnResultExecuted
- OnResultExecuting
Il frammento di codice seguente è l'esempio di Filtri dei risultati
utilizzando il sistema;
utilizzando System.Collections.Generic;
utilizzando System.Linq;
utilizzando System.Web;
utilizzando System.Web.Mvc;
spazio dei nomi ResultFilter.Filters
{
classe pubblica MyResultfilter : FilterAttribute,IResultFilter
{
public void OnResultExecuted(ResultExecutedContext filterContext)
{
if (filterContext.HttpContext.Session[“UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Home/Contact”);
}
altro
{
filterContext.Result = newRedirectResult(“/Login/Login”);
}
}
public void OnResultExecuting (ResultExecutingContext filterContext)
{
if (filterContext.HttpContext.Session[“UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Home/Contact”);
}
altro
{
filterContext.Result = newRedirectResult(“/Login/Login”);
}
}
}
}
[MyResultfilter]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Persona p = nuovaPersona ();
return View("Persona",p);
}
Filtri di eccezione
Possiamo usarli quando un controller o un metodo di azione genera l'eccezione.
Questo filtro di eccezione è importante per catturare l'eccezione.
Di seguito è riportato lo snippet di codice per utilizzare i filtri di eccezione
utilizzando il sistema;
utilizzando System.Collections.Generic;
utilizzando System.Linq;
utilizzando System.Web;
utilizzando System.Web.Mvc;
spazio dei nomi ExceptionFilter.Filters
{
classe pubblica MyExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException (ExceptionContext filterContext)
{
filterContext.Controller.ViewBag.onExceptionError = "Filtro ExceptionFilter chiamato";
filterContext.HttpContext.Response.Write("Filtro ExceptionFilter chiamato");
}
}
}
[MyExceptionFilter]
classe pubblica HomeController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Persona p = nuovaPersona ();
return View("Persona",p);
}

}
Leggi anche: Progetto Java MVC
Impara i corsi di software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.
Conclusione
Ci auguriamo che questo articolo ti abbia aiutato a comprendere i filtri di azione in MVC.
Se sei interessato a saperne di più sullo sviluppo full-stack, dai un'occhiata al programma Executive PG di upGrad & IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.
Cosa sono le strutture dati nella programmazione?
Le strutture dati sono il modo in cui organizziamo i dati in un programma. Le due strutture dati più importanti sono gli array e gli elenchi collegati. Gli array sono la struttura dati più familiare ed è la più facile da capire. Gli array sono fondamentalmente elenchi numerati di elementi correlati. Sono semplici da capire e da usare, ma non sono molto efficienti quando si lavora con grandi quantità di dati. Gli elenchi collegati sono più complessi, ma possono essere molto efficienti se usati correttamente. Sono buone scelte quando dovrai aggiungere o rimuovere elementi nel mezzo di un elenco di grandi dimensioni o quando devi cercare elementi in un elenco di grandi dimensioni.
Quali sono le differenze tra l'elenco collegato e gli array?
Negli array, un indice viene utilizzato per accedere a un elemento. Gli elementi nell'array sono organizzati in ordine sequenziale, il che semplifica l'accesso e la modifica degli elementi se viene utilizzato un indice. Anche l'array ha una dimensione fissa. Gli elementi vengono assegnati al momento della sua creazione. Nell'elenco collegato, un puntatore viene utilizzato per accedere a un elemento. Gli elementi di un elenco collegato non sono necessariamente memorizzati in ordine sequenziale. Un elenco collegato ha una dimensione sconosciuta perché può contenere nodi al momento della sua creazione. Un puntatore viene utilizzato per accedere a un elemento, quindi l'allocazione della memoria è più semplice.
Che cos'è un puntatore in C?
Un puntatore è un tipo di dati in C che memorizza l'indirizzo di qualsiasi variabile o funzione. Viene generalmente utilizzato come riferimento a un'altra posizione di memoria. Un puntatore può contenere un indirizzo di memoria di un array, una struttura, una funzione o qualsiasi altro tipo. C usa i puntatori per passare e ricevere valori dalle funzioni. I puntatori vengono utilizzati per allocare dinamicamente lo spazio di memoria.