5

Quando inserisco una parte del mio modulo in una vista parziale, tutte le parti del modulo ottengono la sintassi non ostruttiva eccetto gli elementi del modulo nella vista parziale.Sintassi non ostruttiva forzata senza Html.BeginForm/Ajax.BeginForm in vista parziale

L'unico modo in cui ho trovato come "applicare" la sintassi non ostruttiva, è avviando un altro modulo all'interno della vista parziale.

Vista:

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

PartialView:

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

uscita:

<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"> 

Quindi solo l'elemento di input dalla visualizzazione ha la sintassi unobstructive e la vista parziale non ha ...

C'è un modo per applicare la sintassi non ostruttiva all'interno di una vista parziale, che non richiede di iniziare un nuovo modulo?

risposta

4

Ho effettivamente trovato una soluzione migliore! Sono andato a scavare un po 'nel codice mvc asp.net e la classe MvcForm crea tutta la sintassi di convalida non ostruttiva.

quindi se si utilizza:

@using(new MvcForm(ViewContext)) 
{ 
} 

invece di

@using(Html.BeginForm()) 
{ 
} 

sarà ancora applicare la sintassi unobstructive, ma non creerà il tag form HTML :)

+1

, signore, SONO UN GENIO. Grazie. – Henry

+0

come hai fatto a risolverlo, sto anche di fronte lo stesso problema – Aravind

+0

@Aravind si dovrebbe avvolgere il file cshtml parziale: @using (Html.BeginForm()) { contenuti .. } in questo modo si otterrà tutti gli attributi html corretti senza che sia racchiuso in un tag

:) –

Problemi correlati