Quelle est la différence entre la mise en œuvre FilterAttribute, IActionFilter et héritant de ActionFilterAttribute dans asp.net mvc 3?
Je vois que dans une situation que nous pouvons remplacer OnActionExecuting
ou OnActionExecuted
méthodes d'hériter de ActionFilterAttribute
classe comme ceci:
public class MyFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{ //bla bla }
}
Et dans d'autres situations, nous pouvons également mettre en œuvre IActionFilter
et FilterAttribute
comme ceci:
public class MySecondFilterAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuted(ActionExecutingContext filterContext) {}
}
Alors, est-t-il des différences entre ces deux approches, peut-être tout particulièrement les situations où il serait préférable d'utiliser l'un d'eux sur l'autre??
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
Fondamentalement FilterAttribute offre la plus basse du comportement au niveau de la MVC Attributs et met en œuvre la IMvcFilter qui fournit la Commande et AllowMultiple propriétés.
ActionFilterAttribute est la base pour le filtrage des actions et des résultats, étant donné que c'est une mise en œuvre de IActionFilter, IResultFilter et hériter de FilterAttribute.
Votre MySecondFilterAttribute mise en œuvre conduit à ActionFilterAttribute sans IResultFilter capacités (OnResultExecuting et OnResultExecuted).