如何从引导模式中清除服务器端MVC模型验证错误?

时间:2014-05-04 11:59:07

标签: jquery asp.net-mvc validation twitter-bootstrap

我有一个"客户列表"带&#34的页面;添加"弹出引导模式的按钮,允许用户输入新客户端的详细信息。

模态的主体由部分视图生成,该视图作为"列表的一部分呈现"页面最初。

当用户点击添加时,表单将通过AJAX调用提交给服务器。如果存在模型错误,则服务器将通过仅重新发送模态的主体(具有验证错误)来响应,在客户端将其注入模态中。

我以通常的方式使用@Html.ValidationSummary()@Html.ValidationMessageFor()来添加模型错误。

如果用户现在点击"取消",然后点击"添加"按钮再次出现,模态重新出现。在这种情况下,我想将它视为一个新的开始并清除模态体的所有验证错误。我知道如何清除客户端("不显眼的")验证错误,但如何清除@Html.ValidationSummary()@Html.ValidationMessageFor()添加的错误。

我可以回到服务器并要求它使用新模型重新渲染,但我想我正在寻找一条不涉及另一个AJAX调用的快捷方式。

1 个答案:

答案 0 :(得分:4)

请尝试以下代码:

$.fn.clearErrors = function () {
    $(this).each(function() {
        $(this).find(".field-validation-error").empty();
        $(this).trigger('reset.unobtrusiveValidation');
    });
};

如果您认为难以理解,则以下代码具有相同的效果:

function resetValidation() {
        //Removes validation from input-fields
        $('.input-validation-error').addClass('input-validation-valid');
        $('.input-validation-error').removeClass('input-validation-error');
        //Removes validation message after input-fields
        $('.field-validation-error').addClass('field-validation-valid');
        $('.field-validation-error').removeClass('field-validation-error');
        //Removes validation summary 
        $('.validation-summary-errors').addClass('validation-summary-valid');
        $('.validation-summary-errors').removeClass('validation-summary-errors');

    }