Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 21438|Resposta: 3

[ASP.NET] Classe ActionFilterAttribute filtro personalizado mvc

[Copiar link]
Publicado em 06/01/2016 15:32:33 | | |

Caso os filtros introduzidos anteriormente não atendam aos requisitos, esse filtro personalizado deve ser útil caso você queira definir sua própria lógica de processamento antes e depois da execução e retorno do método de comportamento. Para personalizar um filtro, você herda a classe ActionFilterAttribute, que é uma classe abstrata que implementa as interfaces IActionFilter e IResultFilter, principalmente reescrevendo os quatro métodos virtuais para alcançar a lógica de injeção antes e depois da execução e retorno do método de comportamento

método
parâmetro
descrição
OnActionExecuting
AçãoExecutandoContexto
Execute antes que o método comportamental seja executado
OnActionExecuted
AçãoExecutadoContexto
Execute após a execução do método comportamental
OnResultExecuting
ResultadoExecutandoContexto
Execute antes que o método de comportamento retorne
OnResultExecuted
ResultadoExecutadoContexto
Execute após o retorno do método de comportamento

Os quatro métodos são executados na ordem de OnActionExecuting>OnActionExecuted>OnResultExecuting>OnResultExecuted. Os argumentos dos quatro métodos acima são herdados da classe ContollorContext. Por exemplo, um filtro personalizado é definido abaixo


  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.     }
Copiar código

Os métodos comportamentais para seu uso são definidos abaixo

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







Anterior:A Linode, uma conhecida provedora de serviços de hospedagem, é suspeita de ter sido hackeada, e os usuários precisam mudar suas senhas o quanto antes
Próximo:O Memcache analisa todos os principais métodos listados
 Senhorio| Publicado em 25/10/2016 10:00:36 |
 Senhorio| Publicado em 10/08/2019 22:16:41 |
Ordem de execução do filtro MVC do .NET:

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

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

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

Além disso, a mesma ordem de execução do filtro: de cima para baixo, princípio de proximidade:




Filter2=>Filter1
Publicado em 26/08/2019 13:24:19 |
Mark, aprendido
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com