45 votes

Pourquoi appeler base.OnActionExecuting(filterContext); ?

Je suis en train de regarder un de mes vieux codes et j'ai un filtre d'action (méthode OnActionExecuting)

et à la fin, j'ai

 base.OnActionExecuting(filterContext); 

En cherchant un peu, j'ai constaté que cela se produisait assez souvent. Je vois aussi que dans mon ancienne balise Authorize, j'appelle la base.

Dois-je toujours appeler les méthodes de base après ?

71voto

Darin Dimitrov Points 528142

Dois-je toujours appeler les méthodes de base après ?

Cela dépend de la situation.

Par exemple, dans les filtres d'autorisation (dérivant de AuthorizeAttribute ) si vous appelez la méthode de base, toute la logique d'autorisation existante intégrée dans ASP.NET MVC sera exécutée. Si vous ne l'appelez pas, seule votre logique d'autorisation sera appliquée.

En ce qui concerne les autres filtres d'action standard (dérivant de ActionFilterAttribute ) tous les OnActionExecuting , OnActionExecuted , OnResultExecuting et OnResultExecuted sont définies comme virtuelles mais leur corps est vide, ce qui ne fait aucune différence si vous appelez ou non la méthode de base.

3voto

xTRUMANx Points 807

Je pense que si vous laissez Visual Studio produire automatiquement une méthode de substitution en tapant override et en sélectionnant une méthode dans intellisense et en appuyant sur tab, Visual Studio ajoutera automatiquement base.MethodName() dans le corps de la méthode.

Si vous n'en avez pas besoin, supprimez-la. Je l'ai toujours supprimée lorsque j'ai créé mon ActionFilter et je n'ai encore jamais eu de problème. Le seul cas où vous ne devriez pas l'enlever est lorsque vous avez besoin que la méthode de base soit appelée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X