Я создал свой собственный атрибут условной проверки для проверки моей модели MVC как на клиенте, так и на сервере, наследуя RequiredAttribute
и реализуя IClientValidatable
. Идея состоит в том, что если логическое свойство моей модели истинно, то требуется другое свойство. В представлении это проявляется как флажок, который указывает, нужно ли заполнять текстовое поле.
Это работает отлично, за исключением случаев, когда пользователь выполняет следующие действия:
Я хотел бы перепроверить форму, когда флажок установлен или снят, или, что еще лучше, просто перепроверить это поле, чтобы сообщение об ошибке больше не отображалось. Я пробовал различные комбинации вызова метода jQuery validate()
, но, похоже, ничто не способно -повторно выполнить проверку.
Я использую следующий javascript для настройки функции проверки и связанного с ней ненавязчивого адаптера.
$.validator.addMethod(
"requiredif",
function(value, element, parameters) {
var selector = "#" + parameters["dependentpropertyname"];
var triggerValue = parameters["triggervalue"].toString().toLowerCase();
var actualValue = $(selector).is(":checked").toString().toLowerCase();
if (actualValue === triggerValue) return $.validator.methods.required.call(this, value, element, parameters);
return true;
});
$.validator.unobtrusive.adapters.add(
"requiredif",
["dependentpropertyname", "triggervalue"],
function(options) {
options.rules["requiredif"] = {
dependentpropertyname: options.params["dependentpropertyname"],
triggervalue: options.params["triggervalue"]
};
options.messages["requiredif"] = options.message;
}
);
Спасибо!