5

Cuando pongo una parte de mi formulario en una vista parcial, todas las partes de formulario obtienen una sintaxis no obstructiva excepto los elementos de formulario en la vista parcial.Forzar sintaxis no obstructiva sin Html.BeginForm/Ajax.BeginForm en vista parcial

La única manera en que encontré cómo "aplicar" la sintaxis no obstructiva es mediante el inicio de otro formulario dentro de la vista parcial.

Vista:

@using (Ajax.BeginForm("SubmitHandler", new DefaultAjaxOptions())) 
{ 
    @Html.EditorFor(m => m.Name) 
    @Html.Partial("MyPartialView", Model) 
} 

PartialView:

@Html.TextBoxFor(m => m.SomeContent) 

Salida:

<input class="text-box single-line" data-val="true" data-val-required="This field is required." id="Name" name="Name" type="text" value=""> 
<input id="SomeContent" name="SomeContent" type="text" value="0"> 

lo que sólo el elemento de entrada de la vista tiene la sintaxis no obstructivo y la vista parcial no tiene ...

¿Hay alguna forma de aplicar una sintaxis no obstructiva dentro de una vista parcial, que no requiere que comience una nueva forma?

Respuesta

4

¡De hecho, encontré una solución mejor! Busqué un poco en el código asp.net mvc y la clase MvcForm crea toda la sintaxis de validación no obstructiva.

tanto, si utiliza:

@using(new MvcForm(ViewContext)) 
{ 
} 

en lugar de

@using(Html.BeginForm()) 
{ 
} 

que se seguirá aplicando la sintaxis no obstructivo, pero no crea las variables de formulario HTML :)

+1

señor, SON UN GENIO. Gracias. – Henry

+0

¿cómo resolverlo, yo también estoy enfrentando el mismo problema – Aravind

+0

@Aravind que debe envolver su archivo cshtml parcial con: @using (Html.BeginForm()) { contenido .. } de esta manera se obtendrá todos los atributos html correctos sin que esté envuelto en una etiqueta

:) –

Cuestiones relacionadas