5

Kiedy umieszczam część mojej formy w częściowym widoku, wszystkie części formularza uzyskują nieobstruktywną składnię, z wyjątkiem elementów formularza w widoku częściowym.Wymuszenie nieobstruktywnej składni bez Html.BeginForm/Ajax.BeginForm w częściowym widoku

Jedyny sposób, w jaki znalazłem sposób "zastosowania" nieobstruktywnej składni, to rozpoczęcie innej formy w widoku częściowym.

Widok:

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

PartialView:

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

wyjściowa:

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

Więc tylko element wejściowy z widokiem ma składnię unobstructive i częściowy widok nie ma ...

Czy istnieje sposób na zastosowanie nieobstruktywnej składni w częściowym widoku, co nie wymaga od ciebie nowego formularza?

Odpowiedz

4

Właściwie znalazłem lepsze rozwiązanie! Poszedłem trochę kopać w kodzie mvc asp.net, a klasa MvcForm tworzy całą nieobstruktywną składnię walidacji.

więc jeśli używasz:

@using(new MvcForm(ViewContext)) 
{ 
} 

zamiast

@using(Html.BeginForm()) 
{ 
} 

będzie nadal stosować składnię unobstructive, ale nie stworzy tagów formularza HTML :)

+1

panu, JESTEŚ GENIUSEM. Dziękuję Ci. – Henry

+0

jak się go rozwiązać, jestem też w obliczu tego samego problemu – Aravind

+0

@Aravind należy owinąć częściowego pliku cshtml z: @using (Html.BeginForm()) { zawartość .. } w ten sposób otrzyma wszystkie poprawne atrybuty html bez zawijania w tagu

:) –