Bro*_*ato 2 ajax asp.net-mvc modelstate
在我看来,我有2个局部视图.
PV1使用UpdateTargetIdPV2上的div,因为我们想用新添加的项目更新我们的列表.
当PV1上提交的项目有效时,一切正常.ModelState.IsValid == false提交ajax表单时它不起作用.它不起作用,因为UpdateTargetId位于PV2上,我需要更新PV1以显示ModelState错误.所以我们在PV2上遇到了PV1的重复!
下面是另一个类似问题的stackoverflow帖子,但没有提供解决方案.
如果ModelState无效,ASP.NET MVC AJAX会更改UpdateTargetId
我认为Json替代方案可能是一个解决方案,但我想知道我们是否可以调整标准的Ajax表单方法以满足我们的需求?
而不是使用UpdateTargetId,你可以尝试使用OnComplete:
@using (Ajax.BeginForm(new AjaxOptions { OnComplete = "complete" }))
{
...
}
Run Code Online (Sandbox Code Playgroud)
并在此处理程序内部测试结果视图中是否存在错误:
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);
}
}
Run Code Online (Sandbox Code Playgroud)