0

Il semble que ASP.NET MVC ne fonctionne que sur ASP.NET WebForms. System.Web.Mvc.ViewPage dans ASP.NET MVC hérite de System.Web.UI.Page, qui inclut des méthodes de cycle de vie de page comme OnRender et des amis.Quand est-ce correct de se mêler du cycle de vie de la page à une page ASP.NET MVC?

J'ai vu quelques commentaires sur le web à l'effet que vous devriez résister à l'envie de remplacer ces méthodes à tout prix !. Bien sûr, cela signifie que je me retrouve à résister à l'envie de faire exactement cela.

Y a-t-il vraiment un problème avec quelque chose comme ce qui suit? On pourrait débattre de la pureté de mettre cela dans une «vue», mais il semble beaucoup expédient.

À quel point est-il dangereux/blasphématoire de déroger à ces méthodes? Quand cela pourrait-il avoir un sens?

+1

MVC ne fonctionne pas sous WebForms. Ils fonctionnent tous deux sur ASP.NET, mais ne sont pas liés. Il n'y a pas vraiment de cycle de vie de page dans MVC. L'endroit approprié pour appliquer https est probablement un filtre ou dans un contrôleur de base. – Ryan

+0

Le commentaire de Ryan est techniquement incorrect. WebForms est intégré à System.Web. Vous pouvez prendre n'importe quelle application ASP.NET MVC et ajouter runat = 'server' et le cycle de vie complet de la page se révèle dans toute sa splendeur. – Justin

Répondre

3

Le problème avec ce que vous décrivez est que la vue n'est rendue qu'une fois que le contrôleur décide quelle vue afficher. Cela peut sembler surprenant au début, mais au moment où votre méthode OnPreInit est appelée, toute la logique du contrôleur a déjà déjà exécutée.

L'endroit correct pour mettre cela, comme @Ryan dit, est dans un filtre ou un contrôleur de base.

+0

Dean, merci d'avoir éclairci mon erreur très stupide. J'ajoutais MVC à un site WebForms existant et mon esprit était clairement dans un mode request = page. Bien sûr, vous avez raison qu'une vue (page) n'est créée qu'à la demande du contrôleur (beaucoup trop tard pour ce que je faisais). – Justin