ASP.NET MVC3 Html.Action, содержащий форму
У меня есть страница на моей странице, которая содержит форму.
Я использовал этот модуль аналогично следующему:
@Html.Action("Pod","Home")
В действии Pod HttpPost, которое обрабатывает публикацию формы, есть некоторая проверка бизнес-правил. Если это бизнес-правило не выполняется, я добавляю ошибку в состояние модели.
Проблема в том, что когда бизнес-правило не проходит проверку. Я возвращаю вид из блока, который показывает только блок на пустой странице.
Как я могу правильно использовать форму, подобную этой, и при этом все еще иметь проверку этого бизнес-правила на стороне сервера (для проверки требуется удар по БД)?
1 ответ
Одна возможность состоит в том, чтобы AJAXify форму в Pod
частичный:
<div id="pod">
@Html.Action("Pod","Home")
</div>
и внутри Pod.cshtml
:
@using (Html.BeginForm("Pod", "Home", FormMethod.Post, new { id = "podForm" }))
{
...
}
наконец AJAXify это:
$(function() {
$('#podForm').submit(function() {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function(result) {
$('#pod').html(result);
}
});
});
});
Последнее, что нужно убедиться, это то, что действие POST возвращает Pod.cshtml как частичное представление. Две возможности:
[HttpPost]
public ActionResult Pod(PodViewModel model)
{
if (!ModelState.IsValid)
{
return PartialView(model);
}
...
}
или в Pod.cshtml
частичный:
@{
Layout = null;
}