Tenemos una gran aplicación heredada en la que queremos comenzar a utilizar MVC para nuevas funcionalidades.Compartiendo un maestro entre MVC y WebForms - tratando con el <form>
Para hacer esto añadimos enrutamiento personalizado, por ejemplo:
routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" });
y queremos compartir la página maestra entre las viejas y las nuevas WebForms páginas MVC.
Esto parece bastante simple: cambió el maestro para heredar de ViewMasterPage
y también se puede utilizar como maestro para páginas MVC.
El problema es el HTML <form>
.
La página maestra tiene una etiqueta <form>
en la parte superior y 3 paneles de contenido en su interior, que es como le gusta a WebForms. El control Page
anula el formulario del maestro para señalar hacia atrás en la página, y esto parece ser un comportamiento codificado.
Los tres paneles de contenido tienen controles de WebForms, por lo que la etiqueta de nivel de página <form>
debe estar fuera de ellos para cubrir los tres. Algo como esto:
<form id="form1" runat="server">
...
<asp:contentplaceholder id="content1" runat="server" />
...
<asp:contentplaceholder id="content2" runat="server" />
... //etc
</form>
Sin embargo, para MVC queremos tener formas dentro de las vistas utilizando el ayudante Html.BeginForm
. HTML no te permite anidar formularios. El patrón MVC necesita las vistas para publicar de nuevo en diferentes acciones (por ejemplo, una vista de "detalles" puede publicar de nuevo en una acción de "edición").
¿Alguien sabe una buena forma de evitar esto?
Conozco esta pregunta relacionada: http://stackoverflow.com/questions/841418 Aquí estoy específicamente preocupado con el problema de la etiqueta del formulario – Keith