У меня есть частичное представление, которое представляется в рамках основного представления. Частичное представление использует в своих интересах System.ComponentModel.DataAnnotations
и Html.EnableClientValidation()
.
На ссылку нажимают, и отделение, содержащее частичное представление, отображено в a JQuery.Dialog()
.
Я затем нажимаю кнопку сохранения, не вводя текста в моем проверенном поле ввода. Это заставляет клиентскую проверку стрелять как ожидалось, и отображать '*required' сообщение около недопустимого поля.
Когда кнопка отмены нажата, я хочу сбросить сторону клиента проверка MVC назад к, он - состояние по умолчанию, и удалите любые сообщения, готовые к тому, когда пользователь открывает диалоговое окно снова. Существует ли рекомендуемый способ сделать это?
Этот ответ предназначен для 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');
}
Надеюсь, это тот эффект, который вы ищете.