javascript - MVC 5 Html.ValidationSummary 在 AJAX 发布后仍然可见

标签 javascript jquery ajax asp.net-mvc

使用 Html.ValidationSummary 和 Html.BeginForm 时,通常会在所有字段都验证并且 Controller 可以执行后续步骤时重新加载或导航离开页面。在这种情况下,无需清除验证摘要。

但是,当使用 Ajax.BeginForm 时,用户可能永远不会离开页面。一旦表单经过验证,控制权就会转到上面的 Controller ,但 Controller 可能会将用户发送回调用表单,因为需要解决一些服务器端验证问题。在这种情况下,.NET 中的一个明显错误不会清除 ValidationSummary。是的,我可以使用表单的 OnBegin 属性通过 JavaScript/JQuery 隐藏/清除它,但如果稍后在表单上需要它,比如当您使客户端验证无效时,它就永远不会取消隐藏。

我的表单片段:

@using (Ajax.BeginForm("ExistingLogin", "Home", null, new AjaxOptions { HttpMethod = "Post", OnBegin="onBegin", OnSuccess = "onSuccess", OnFailure = "onError" }, new { @class = "form-horizontal", role = "form" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary("Please correct the following errors:", new { @class = "alert alert-danger", @role = "alert" })
    <div id="controllerResponse" class="alert alert-danger" role="alert" style="display:none;"></div>

你如何处理这个问题?

最佳答案

不要隐藏/显示验证器,而是遵循 jQuery 的做法,更改类:

function onComplete() {
    $(".alert").removeClass("validation-summary-errors");
    $(".alert").addClass("validation-summary-valid");
}

只是不确定在 OnComplete 中还是在 OnBegin 中执行此操作是否更好。

关于javascript - MVC 5 Html.ValidationSummary 在 AJAX 发布后仍然可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25025530/

相关文章:

javascript - 文本替换后匹配子字符串的光标位置

javascript - Jquery POST 不填充数组

jquery - 如何在单击时旋转图像,然后在再次单击后将其旋转回来?使用 HTML、CSS 和 jQuery

php - 比较 HTML 和 Javascript

jquery - 当请求因我的服务器关闭而中止时,为什么 $.ajax 会调用成功处理程序?

javascript - 替换网页上的非代码文本

javascript - 在javascript中连接多个数组而不是concat

javascript - 显示瞬时选中的单选按钮的数量

jquery - 使用 CSS 修改 SVG 作为背景图像

javascript - 如何使用 Ajax 返回的对象