Как я очищаю клиентские ошибки проверки MVC, когда кнопка отмены нажата, когда пользователь делал недействительным форму?

У меня есть частичное представление, которое представляется в рамках основного представления. Частичное представление использует в своих интересах System.ComponentModel.DataAnnotations и Html.EnableClientValidation().

На ссылку нажимают, и отделение, содержащее частичное представление, отображено в a JQuery.Dialog().

Я затем нажимаю кнопку сохранения, не вводя текста в моем проверенном поле ввода. Это заставляет клиентскую проверку стрелять как ожидалось, и отображать '*required' сообщение около недопустимого поля.

Когда кнопка отмены нажата, я хочу сбросить сторону клиента проверка MVC назад к, он - состояние по умолчанию, и удалите любые сообщения, готовые к тому, когда пользователь открывает диалоговое окно снова. Существует ли рекомендуемый способ сделать это?

31
задан Eitan K 9 September 2015 в 15:18
поделиться

1 ответ

Этот ответ предназначен для MVC3. См. комментарии ниже для помощи в обновлении его для MVC 4 и 5

Если вы просто хотите очистить валидационные сообщения, чтобы они не показывались пользователю, вы можете сделать это с помощью javascript следующим образом:

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

    }

Если вам нужно, чтобы сброс работал только во всплывающем окне, вы можете сделать это следующим образом:

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

    }

Надеюсь, это тот эффект, который вы ищете.

47
ответ дан 27 November 2019 в 21:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: