提问者:小点点

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


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

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

当用户单击add时,表单将通过AJAX调用提交给服务器。如果存在模型错误,那么服务器将通过只重新发送模态的主体(带有验证错误)来响应,该主体在客户端被注入回模态中。

我使用@html.validationsummary()@html.validationmessagefor()以通常的方式添加模型错误。

如果用户现在单击“取消”,然后稍后再次单击“添加”按钮,则模式将重新出现。在这种情况下,我想把它当作一个新的开始,从模态的主体中清除所有的验证错误。我知道如何清除客户端(“不引人注目”)验证错误,但如何清除@html.validationsummary()@html.validationmessagefor()添加的错误。

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


共1个答案

匿名用户

请尝试以下代码:

$.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');

    }