在我看来,我有2个部分观点。
PV1在PV2上的div上使用UpdateTargetId
,因为我们想用新添加的项目更新我们的列表。
当PV1上提交的项目有效时,一切正常。当提交ajax表单时ModelState.IsValid == false
时,它不起作用。它不起作用,因为UpdateTargetId位于PV2上,我需要更新PV1以显示ModelState错误。所以我们在PV2上遇到了PV1的副本!
下面是关于类似问题的另一个stackoverflow帖子,但没有提供任何解决方案。
ASP.NET MVC AJAX change UpdateTargetId if ModelState is invalid
我认为 Json 替代方案可能是一个解决方案,但我想知道我们是否可以调整标准的 Ajax格式方法以满足我们的需求?
答案 0 :(得分:7)
您可以尝试使用UpdateTargetId
:
OnComplete
@using (Ajax.BeginForm(new AjaxOptions { OnComplete = "complete" }))
{
...
}
并在此处理程序内部测试结果视图中是否存在错误:
function complete(result) {
var isError = $('span.field-validation-error', result.responseText).length > 0;
if (isError) {
// there was an error => we update the container of the form
$('#frmContainer').html(result.responseText);
} else {
// no error => we hide validation errors and update the result container
$('#frm .field-validation-error').hide();
$('#frm .input-validation-error').removeClass('input-validation-error');
$('#result').html(result.responseText);
}
}