gpt4 book ai didi

ModelState为Invalid时提交数据后的Ajax表单和UpdateTargetId

转载 作者:行者123 更新时间:2023-12-02 07:44:26 24 4
gpt4 key购买 nike

在我看来,我有 2 个部分观点。

  • 第一个局部 View (PV1):用户可以在文本框中键入项目并通过 ajax 表单提交。
  • 第二部分 View (PV2):用户可以看到以前提交的项目列表。

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 表单 方法来满足我们的需求?

最佳答案

您可以尝试使用 OnComplete 而不是使用 UpdateTargetId:

@using (Ajax.BeginForm(new AjaxOptions { OnComplete = "complete" }))
{
...
}

并在此处理程序中测试结果 View 中是否存在错误:

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);
}
}

关于ModelState为Invalid时提交数据后的Ajax表单和UpdateTargetId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com