Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 21438|Atbildi: 3

[ASP.NET] mvc pielāgotais filtrs ActionFilterAttribute klase

[Kopēt saiti]
Publicēts 06.01.2016 15:32:33 | | |

Gadījumā, ja iepriekš ieviestie filtri neatbilst prasībām, šim pielāgotajam filtram vajadzētu noderēt, ja vēlaties definēt savu apstrādes loģiku pirms un pēc uzvedības metodes izpildes un atgriešanas. Lai pielāgotu filtru, jūs mantojat klasi ActionFilterAttribute, kas ir abstrakta klase, kas ievieš IActionFilter un IResultFilter saskarnes, galvenokārt pārrakstot četras virtuālās metodes, lai panāktu injekcijas loģiku pirms un pēc uzvedības metodes izpildes un atgriešanas

metode
Parametru
apraksts
OnActionExecuting
ActionExecutingContext
Izpildīt pirms uzvedības metodes izpildes
OnActionExecuted
ActionExecutedContext
Izpildīt pēc uzvedības metodes izpildes
OnResultExecuting
ResultExecutingContext
Izpildīt pirms uzvedības metodes atgriešanās
OnResultExecuted
RezultātsIzpildītsKonteksts
Izpildīt pēc uzvedības metodes atgriešanas

Četras metodes tiek izpildītas secībā OnActionExecuting>OnActionExecuted>OnResultExecuting>OnResultExecuted. Iepriekš minēto četru metožu argumenti ir pārmantoti no ContollorContext klases. Piemēram, pielāgots filtrs ir definēts tālāk


  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.     }
Kopēt kodu

Uzvedības metodes tās izmantošanai ir definētas tālāk

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







Iepriekšējo:Ir aizdomas, ka Linode, labi pazīstams hostinga pakalpojumu sniedzējs, ir uzlauzts, un lietotājiem pēc iespējas ātrāk jāmaina paroles
Nākamo:Memcache aplūko visas galvenās uzskaitītās metodes
 Saimnieks| Publicēts 25.10.2016 10:00:36 |
 Saimnieks| Publicēts 10.08.2019 22:16:41 |
.NET MVC filtra izpildes secība:

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

Kontrollera darbība()---->IActionFilter(OnActionExecuted) ---->IResultFilter(OnResultExecuting) ---->

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

Turklāt tāda pati filtra izpildes secība: no augšas uz leju, tuvuma princips:




Filter2=>Filter1
Publicēts 26.08.2019 13:24:19 |
Marks, iemācījies
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com