Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 21438|Risposta: 3

[ASP.NET] mvc custom filter ActionFilterAttribute class

[Copiato link]
Pubblicato su 06/01/2016 15:32:33 | | |

Nel caso in cui i filtri introdotti prima non soddisfino i requisiti, questo filtro personalizzato dovrebbe essere utile se vuoi definire la tua logica di elaborazione prima e dopo l'esecuzione e il ritorno del metodo di comportamento. Per personalizzare un filtro, si eredita la classe ActionFilterAttribute, che è una classe astratta che implementa le interfacce IActionFilter e IResultFilter, principalmente riscrivendo i quattro metodi virtuali per ottenere la logica di iniezione prima e dopo l'esecuzione e il ritorno del metodo di comportamento

metodo
parametro
descrizione
OnActionExecuting
AzioneEsecuzioneContesto
Esegui prima che il metodo comportamentale venga eseguito
OnActionEseguito
ActionExecutedContext
Esegui dopo che il metodo comportamentale è stato eseguito
OnResultExecuting
RisultatoContestoEsecuzione
Esegui prima che il metodo di comportamento restituisca
OnResultExecuted
RisultatoContestoEseguito
Esegui dopo che il metodo di comportamento è stato restituito

I quattro metodi vengono eseguiti nell'ordine OnActionExecuting>OnActionExecuted>OnResultExecuting>OnResultExecuted. Gli argomenti dei quattro metodi sopra elencati sono ereditati dalla classe ContollorContext. Ad esempio, un filtro personalizzato è definito di seguito


  1. public class MyCustomerFilterAttribute : ActionFilterAttribute
  2.     {
  3.         public string Message { get; set; }

  4.         public override void OnActionExecuted(ActionExecutedContext filterContext)
  5.         {
  6.             base.OnActionExecuted(filterContext);
  7.             filterContext.HttpContext.Response.Write(string.Format( "<br/> {0} Action finish Execute.....",Message));
  8.         }

  9.         public override void OnActionExecuting(ActionExecutingContext filterContext)
  10.         {
  11.             CheckMessage(filterContext);
  12.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action start Execute.....", Message));
  13.             base.OnActionExecuting(filterContext);
  14.         }

  15.         public override void OnResultExecuted(ResultExecutedContext filterContext)
  16.         {
  17.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action finish Result.....", Message));
  18.             base.OnResultExecuted(filterContext);
  19.         }

  20.         public override void OnResultExecuting(ResultExecutingContext filterContext)
  21.         {
  22.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action start Execute.....", Message));
  23.             base.OnResultExecuting(filterContext);
  24.         }

  25.         private void CheckMessage(ActionExecutingContext filterContext)
  26.         {
  27.             if(string.IsNullOrEmpty( Message)||string.IsNullOrWhiteSpace(Message))
  28.                 Message = filterContext.Controller.GetType().Name + "'s " + filterContext.ActionDescrip{过滤}tor.ActionName;
  29.         }
  30.     }
Copia codice

I metodi comportamentali per utilizzarlo sono definiti di seguito

  1. [MyCustomerFilter]
  2.         public ActionResult CustomerFilterTest()
  3.         {
  4.             Response.Write("<br/>Invking CustomerFilterTest Action");
  5.             return View();
  6.         }
Copia codice







Precedente:Linode, un noto fornitore di servizi di hosting, è sospettato di essere stato hackerato e gli utenti devono cambiare password il prima possibile
Prossimo:Memcache esamina tutti i metodi chiave elencati
 Padrone di casa| Pubblicato su 25/10/2016 10:00:36 |
 Padrone di casa| Pubblicato su 10/08/2019 22:16:41 |
Ordine di esecuzione del filtro MVC di .NET:

IAuthorizationFilter(OnAuthorization)----->IActionFilter(OnActionExecuting)---->

Controller Action()---->IActionFilter(OnActionExecuted) ---->IResultFilter(OnResultExecuting) ---->

view()---->IResultFilter(OnResultExecuted)

Inoltre, lo stesso ordine di esecuzione del filtro: dall'alto verso il basso, principio di prossimità:




Filter2=>Filter1
Pubblicato su 26/08/2019 13:24:19 |
Mark, colto
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com