2011-08-30 25 views
16

Pongo el enunciado de formulario de inicio/final en la página de diseño para no tener que repetirlo en varias páginas. A continuación hay una versión simplificada del código.¿es posible anidar una forma dentro de otra en una maquinilla de afeitar?

@using(Html.BeginForm()) 
{ 
    @RenderBody() 

    <input type = "submit" name = "nextButton" value = "Next-->" /> 
} 

Las cosas están funcionando bien. Lamentablemente, tengo una página que tiene varios botones "Eliminar". Quiero generar un formulario para cada botón de eliminación para que pueda enviar de vuelta al controlador el ID del artículo para eliminar.

¿Puedo hacer eso sabiendo que ya hay otro formulario además de eso?

Gracias por ayudar a

+0

Interesante ... "Puse la declaración de formulario de inicio/finalización en la página de diseño ..." Parece que está en un paso en la ruta de recreación de formularios web. ;) – NotMe

+0

@Chris Lively: ¿Gracioso? Bueno, con todo el TagBuilder con el que tuve que lidiar, no sabía qué más hacer. – Richard77

Respuesta

20

Como dice Mrchief, las especificaciones de HTML prohíben los formularios anidados. Como MVC solo genera HTML estándar, debe trabajar dentro del marco de la especificación.

¿Por qué no crear dos diseños maestros y utilizar el formulario la mayor parte del tiempo, pero usar uno sin un formulario cuando necesite más control sobre los formularios incrustados?

Esta es la razón por la que en realidad debería usar formularios exactamente donde se necesitan, no solo en todas partes.

+0

En realidad, estaba más cerca de lo que acaba de proponer. Simplemente no hice que esa página heredara del diseño y funcionó. Pero tuve que copiar/pegar todo en el diseño de la página que se supone que contiene todos los botones de eliminación. Pero voy a tener otro diseño como sugirió. – Richard77

+1

@ Richard77 - Tenga en cuenta que también puede anidar * diseños *. Por lo tanto, puede tener su diseño estándar, sin forma. Luego puede tener otro diseño que use la primera página como su diseño, pero incluye el formulario. Luego puede elegir hacer diseño para sus páginas de clientes. De esta manera, no tienes que duplicar el código. –

8

hacer la nota que la anidación de las formas no se permite según el W3 specs

Cada formulario debe ser encerrado dentro de un elemento de formulario. Puede haber varios formularios en un solo documento, pero el elemento FORM no puede estar anidado en .

hay un artículo sobre interseting advertencias de formas de anidación here.

En este caso, es mejor generar un form para cada botón en lugar de tener un solo formulario.

ASP.Net formularios web que restringen de tener múltiples formas en la página utilizando runat=server atributo (y el marco necesario para garantizar que sólo uno por página estaba permitido). MVC forms son HTML puro, por lo que puede tener varios de ellos.

Cuestiones relacionadas