我的页面上有一个包含表单的窗格。
我以与以下类似的方式使用此pod:
@Html.Action("Pod","Home")
在Pod的HttpPost操作中有一些业务规则检查处理表单帖子。如果此业务规则失败,我会向模型状态添加错误。
问题是,当业务规则无法验证时。我从pod操作返回一个View,它只显示空白页面上的pod。
如何正确重用此类表单并仍然对此业务规则进行服务器端验证(需要db命令验证)?
答案 0 :(得分:6)
一种可能性是AJAX化Pod
partial:
<div id="pod">
@Html.Action("Pod","Home")
</div>
和Pod.cshtml
内部:
@using (Html.BeginForm("Pod", "Home", FormMethod.Post, new { id = "podForm" }))
{
...
}
最后AJAX化它:
$(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;
}