Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 21438|Válasz: 3

[ASP.NET] mvc custom filter ActionFilterAttribute class

[Linket másol]
Közzétéve 2016. 01. 06. 15:32:33 | | |

Ha a korábban bevezetett szűrők nem felelnek meg a követelményeknek, ez az egyedi szűrő hasznos lehet, ha saját feldolgozási logikát szeretnél meghatározni a viselkedési módszer végrehajtása és visszaküldése előtt és után. A szűrő testreszabásához az ActionFilterAttribute osztályt örököljük, amely egy absztrakt osztály, amely az IActionFilter és IResultFilter interfészeket valósítja meg, főként a négy virtuális módszer újraírásával, hogy a viselkedési metódus végrehajtása és visszatérése előtt és után elérjék az injekciós logikát

módszer
paraméter
leírás
OnActionExecuting
ActionExecutingContext
Végrehajtás a viselkedési módszer végrehajtása előtt
OnActionExecuted
ActionExecutedContext
Végrehajtás a viselkedési módszer végrehajtása után
OnResultExecuting
EredményExecutingContext
Végrehajtás, mielőtt a viselkedési metódus visszatér
OnResultExecuted
EredményExecutedContext
Végrehajtás, miután visszanyerte a viselkedési metódust

A négy módszert az OnActionExecuting>OnActionExecuted>OnResultExecuting>OnResultExecuted-ben hajtják végre. A fenti négy módszer érvei a ContollorContext osztályból örököltek. Például egy egyedi szűrő az alábbiakban definiálva van


  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.     }
Kód másolása

A viselkedési módszereket az alábbiakban definiáljuk

  1. [MyCustomerFilter]
  2.         public ActionResult CustomerFilterTest()
  3.         {
  4.             Response.Write("<br/>Invking CustomerFilterTest Action");
  5.             return View();
  6.         }
Kód másolása







Előző:A Linode, egy ismert hárteszolgáltató, feltörésre gyanúsítják, ezért a felhasználóknak a lehető leghamarabb meg kell változtatniuk jelszavaikat
Következő:A Memcache minden felsorolt kulcsfontosságú módszert vizsgál
 Háziúr| Közzétéve 2016. 10. 25. 10:00:36 |
 Háziúr| Közzétéve 2019. 08. 10. 22:16:41 |
.NET MVC szűrő végrehajtási sorrend:

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

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

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

Ezen felül ugyanaz a szűrő végrehajtási sorrendje: felülről lefelé, közelségi elv:




Filter2=>Filter1
Közzétéve 2019. 08. 26. 13:24:19 |
Mark, tanult
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com