asp.net-mvc - pages - web forms c#
¿Es posible compartir una página maestra entre MVC y webforms? (3)
En mi aplicación webforms, mi página maestra hereda de "HLPUSD.SMART.SMARTMaster" que es solo el espacio de nombre de nuestra aplicación y luego el nombre de la clase de formulario web.
En mi proyecto MVC, la página maestra hereda de "System.Web.Mvc.ViewMasterPage"
¿Me parece que esto tiene algo que ver con eso?
Estoy agregando MVC a un proyecto que tiene MUCHAS páginas heredadas de formularios web. Esto funciona bien Sin embargo, actualmente tengo una página maestra separada para MVC y para los formularios web. Las dos páginas maestras producen resultados esencialmente idénticos. Me gustaría matar a los webforms uno y simplemente usar la página maestra de MVC con todas mis páginas y permanecer seco.
No estar SECO ya me ha mordido un par de veces cuando olvidé cambiar ambos.
Traté de hacerlo de la manera más obvia y solo apunté el atributo de página maestra de la página de contenido web en la página maestra de MVC. Esto arroja un error al decir que los maestros MVC solo funcionan con vistas MVC.
Parece que sería un problema bastante común con los proyectos mixtos de MVC y webform. Mi MVC maestro no está haciendo nada con ViewData, por lo que no veo ningún motivo por el que los formularios web no puedan usarlos.
Esta publicación de blog lo guiará por los pasos necesarios para compartir las páginas maestras de WebForm y MVC con poca o ninguna duplicación. También incluye un proyecto de muestra que puede descargar, y lo encontré bastante útil.
Un inconveniente con el que me topé fue que estaba usando un control LoginStatus en mi encabezado. LoginStatus debe estar dentro de un formulario, por lo que no podría usarlo en mi página maestra raíz (no quiero terminar con formularios anidados en todas mis páginas MVC). Pero ese fue un control bastante fácil de reemplazar con un simple bloque de código en mi página raíz de maestro.
Usted puede compartir la misma página maestra. Su página maestra MVC simplemente debe apuntar a la página maestra de WebForms a través de su atributo MasterPageFile. Esto aplica sus estilos de WebForms MasterPage a su MVC MasterPage.
Estoy usando esta configuración en producción.
La declaración en mi página maestra de MVC, apuntando a la página maestra de formularios web:
<%@ Master Language="C#" MasterPageFile="~/MasterPage/Site.Master"
AutoEventWireup="true" Inherits="System.Web.Mvc.ViewMasterPage" %>
Funciona de maravilla.