我的页面上有一个包含表单的 pod。
我以与以下类似的方式使用了这个 pod:
@Html.Action("Pod","Home")
在处理表单发布的 Pod 的 HttpPost 操作中有一些业务规则检查。如果此业务规则失败,我会在模型状态中添加一个错误。
问题是,当业务规则无法验证时。我从 pod 操作返回一个 View,它仅在空白页面上显示 pod。
我怎样才能正确地重用这样的表单并且仍然对该业务规则进行服务器端验证(需要数据库命中来验证)?
我的页面上有一个包含表单的 pod。
我以与以下类似的方式使用了这个 pod:
@Html.Action("Pod","Home")
在处理表单发布的 Pod 的 HttpPost 操作中有一些业务规则检查。如果此业务规则失败,我会在模型状态中添加一个错误。
问题是,当业务规则无法验证时。我从 pod 操作返回一个 View,它仅在空白页面上显示 pod。
我怎样才能正确地重用这样的表单并且仍然对该业务规则进行服务器端验证(需要数据库命中来验证)?
一种可能性是在部分中对表单进行 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;
}