32 votes

Est-il possible de partager une page maître entre MVC et les formulaires Web?

Je suis ajoutant MVC pour un projet qui a de NOMBREUX héritage webform pages. Cela fonctionne très bien. Cependant, j'ai actuellement un distinct masterpage pour MVC et pour les formulaires. Les deux pages maîtres produire essentiellement identique à la sortie. J'aimerais vraiment tuer les formulaires et juste utiliser le MVC master page avec toutes mes pages et de rester au SEC.

Pas d'être à SEC, a déjà mordu moi une couple de fois quand j'ai oublié de changer à la fois.

J'ai essayé de faire le moyen le plus évident et il suffit de pointer le formulaire contenu de la page MasterPage attribut à la MVC masterpage. Cela déclenche une erreur disant que le MVC maîtres travaillons uniquement avec des vues MVC.

Il semble que ce serait plutôt un problème commun, avec un mélange de MVC et webform projets. Mon MVC maître n'est pas de faire quelque chose avec ViewData, donc je ne vois pas de raison de la webforms ne pouvais pas les utiliser.

27voto

Peter J Points 23798

Vous pouvez absolument partager la même page maître. Votre page maître MVC doit simplement pointer vers la page maître WebForms via son attribut MasterPageFile. Cela applique vos styles WebForms MasterPage à votre MVC MasterPage.

J'utilise cette configuration en production.

La déclaration sur ma page maître MVC, pointant vers la page maître Web Forms:

 <%@ Master Language="C#" MasterPageFile="~/MasterPage/Site.Master"
AutoEventWireup="true" Inherits="System.Web.Mvc.ViewMasterPage" %>
 

Fonctionne comme un charme.

8voto

Ashley Tate Points 536

Ce blog vous guide à travers les étapes nécessaires pour partager WebForm et MVC master pages avec peu ou pas de chevauchement. Il comprend également un exemple de projet que vous pouvez télécharger, et je l'ai trouvé très utile.

Un seul hic que j'ai rencontré a été que j'ai été en utilisant un LoginStatus de contrôle dans ma tête. LoginStatus doit être à l'intérieur d'une forme, donc je ne pouvais pas l'utiliser dans ma racine de la page maître (ne voulant pas se retrouver avec des formulaires imbriqués sur toutes mes pages MVC). Mais c'était un joli contrôle facile à remplacer par un simple bloc de code dans ma racine de la page maître.

0voto

Nick DeVore Points 4424

Dans mon application de formulaires Web, ma page maître hérite de "HLPUSD.SMART.SMARTMaster" qui est juste l'espace de noms pour notre application, puis le nom de la classe de formulaires Web.

Dans mon projet MVC, la page maître hérite de "System.Web.Mvc.ViewMasterPage"

Je pense que cela a quelque chose à voir avec ça?

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