Следуя этому сообщению Выполните проверку клиентской стороны для настраиваемого атрибута
Я пытаюсь понять, как это сделать, передавая дополнительные параметры для клиентского сценария
Насколько я понимаю, для реализации пользовательской проверки с помощью MVC 3 требуется следующее
На основе ValidationAttribute и реализации IClientValidatable. Я также видел несколько примеров, полученных из ModelValidator, который, кажется, реализует функциональность как ValidationAttribute, так и IClientValidatable. addmethod (), чтобы JQuery знал об этом, когда он должен быть выполнен. Что-то вроде:
jQuery.validator.addMethod(
'greaterThan',
function (value, element, params) {
/.../
return /* true or false */ ;
},
''
);
Мой вопрос здесь в том, является ли подпись 'function (value, element, params)' стандартной для методов, которые будут обрабатывать проверку, и я предполагаю, что она будет вызываться некоторыми функциями jQuery в соответствующее время, например, до форма отправляется, или когда элемент теряет предохранители, или при событиях keyUp. Я просто не понимаю, как вы можете это контролировать, то есть выбрать, какое событие подходит для пользовательской проверки.
Он преобразует ненавязчивые атрибуты в; кое-что, что я не очень понимаю, но предполагаю, что это правило jQuery, но я не понимаю, как они работают. Что-то вроде
jQuery.validator.unobtrusive.adapters.add(
'futuredate',
{ },
function (options) {
options.rules['greaterThan'] = true;
options.messages['greaterThan'] = options.message;
}
);
Мой вопрос здесь о «функции (параметры)». Это функция, которая будет вызываться перед 'function (value, element, params) 'и отвечает за извлечение ненавязчивых тегов в структуру данных, которую может понять jQuery.Validation. Из примера кода мне кажется, что options - это объект, который содержит как значения атрибутов из тега (например, options.message), так и соответствующие свойства jQuery, которым он должен сопоставляться (например, options.messages ['ClientSideValidationFunctionName'] . Если да, то как извлекаются и сопоставляются пользовательские параметры.
Надеюсь, я не добавил никаких дополнительных затруднений.