/ / ASP.NET MVC3 Html.Action zawierające formularz - formularze, asp.net-mvc-3, działania potomne

ASP.NET MVC3 Html.Action zawierające formularz - formularze, asp.net-mvc-3, działania potomne

Mam na swojej stronie kapsułkę zawierającą formularz.

Użyłem tego zasobnika w podobny sposób jak poniżej:

@Html.Action("Pod","Home")

Jest pewne sprawdzanie reguł biznesowych w akcji HttpPost w Pod, która obsługuje formularz post. Jeśli ta reguła biznesowa się nie powiedzie, dodaję błąd do stanu modelu.

Problem polega na tym, że gdy reguła biznesowa się nie sprawdza. Zwracam akcję Widok z zasobnika, która pokazuje tylko zasobnik na pustej stronie.

Jak poprawnie ponownie użyć takiego formularza i nadal sprawdzać poprawność tej reguły biznesowej po stronie serwera (wymaga to sprawdzania poprawności bazy danych)?

Odpowiedzi:

6 dla odpowiedzi № 1

Jedną z możliwości jest AJAXify formularza w Pod częściowy:

<div id="pod">
@Html.Action("Pod","Home")
</div>

i w środku Pod.cshtml:

@using (Html.BeginForm("Pod", "Home", FormMethod.Post, new { id = "podForm" }))
{
...
}

wreszcie AJAXify to:

$(function() {
$("#podForm").submit(function() {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function(result) {
$("#pod").html(result);
}
});
});
});

Ostatnią rzeczą, którą należy upewnić się, jest to, że akcja POST zwraca plik Pod.cshtml jako częściowy widok. Dwie możliwości:

[HttpPost]
public ActionResult Pod(PodViewModel model)
{
if (!ModelState.IsValid)
{
return PartialView(model);
}
...
}

lub w Pod.cshtml częściowy:

@{
Layout = null;
}