Question

J'écris un composant que j'aimerais pouvoir utiliser à la fois dans les applications Web MVC et WebForms, mais je ne sais pas comment gérer les différences entre la façon dont HttpContext est géré.

Mon composant implique un IHttpHandler personnalisé (pour WebForms) ou un ActionResult personnalisé (pour MVC).

J'ai donc quelques questions à vous poser:

  • Est-il possible d'utiliser un IHttpHandler avec MVC sans casser le modèle?
  • Est-il acceptable d'utiliser HttpContext.Current lors de la tentative d'écriture de code qui fonctionnera pour les deux? Cela me semble un peu brutal (je ne sais pas pourquoi), mais l’alternative serait d’écrire et de mettre en oeuvre une interface assez prolixe pour gérer l’abstraction entre HttpContext et ControllerContext.
  • Est-ce que je vais à ce propos complètement faux
Était-ce utile?

La solution

  1. Oui, vous pouvez simplement utiliser routes.IgnoreRoute (" MyHandler.ashx ") . Cela reviendra à la gestion ASP.NET originale sans casser le modèle.
  2. Non, je pense que l’utilisation de HttpContext.Current convient parfaitement. Je pense que lorsque vous écrivez votre propre gestionnaire, MVC n'est pas très applicable. Vous écrivez votre code pour ASP.NET et non pour ASP.NET MVC ou ASP.NET Web Forms. Il est facile de le faire fonctionner sur les deux modèles (fonctionne OOTB avec des formulaires Web, avec IgnoreRoute dans MVC). Vous pourriez rendre les choses plus compliquées qu'elles ne devraient l'être! N'oubliez pas que les motifs de conception (tels que MVC) ont pour seul objectif la simplicité. Ne compliquez pas les choses!
  3. goto 2; Écrivez simplement un gestionnaire simple!
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top