Как лучше всего совместить JQuery с моделью проверки на стороне клиента ASP.NET?
Я обычно избегал реализации модели проверки ASP.NET, потому что она всегда кажется излишней для того, что я делал. Для сайта, над которым я сейчас работаю, я просто собираю некритичные пользовательские данные, и мне нужна лишь базовая проверка. Я не хочу, чтобы сообщения появлялись в DOM или что-то в этом роде. Мне всегда было трудно заставить это выглядеть правильно.
Но теперь мне нужно реализовать что-то более элегантное. Что я хочу использовать в JQuery, так это умные поисковые выражения вроде «скажите мне, установлен ли хотя бы один из этих флажков». Я новичок в JQuery, но я думаю, что это примерно одна строка JQuery и намного сложнее в традиционной модели ASP.NET.
Поэтому я хочу в полной мере использовать возможности JQuery, но не полностью разрушать модель проверки ASP.NET.
На данный момент мой лучший подход (который в значительной степени идет за спиной ASP.NET):
$('#<%=btnJoinMailingList.ClientID %>').bind('click', function(event) {
if (...) {
alert("You must enter a name");
return false;
}
return true;
});
Какой здесь подход лучше? Есть ли рекомендуемые плагины для JQuery?
PS. Я не хочу использовать модель MVC. Я пытаюсь создать очень "RAD" сайт, и у меня пока нет времени углубляться в эти забавные новинки.





Веб-формы ASP.NET и модель проверки jQuery очень и очень похожи, IMHO, в том, что оба являются клиентскими, и реализация одного из них не обязательно подрывает другой. Единственная реальная разница будет заключаться в том, что за кулисами валидаторы ASP.NET заставят метод Page.Validate() возвращать false, если у вас есть непроверенное поле.
Вы можете вручную настроить свои собственные элементы управления проверкой, а затем вызвать такое же поведение, но, как вы сами заявили, это может быть излишним.
jQuery также имеет собственный плагин Validator, на который вы, возможно, захотите посмотреть: http://docs.jquery.com/Plugins/Validation/Validator.
ASP.NET имеет множество элементов управления проверкой, одним из которых является CustomValidator.
.
Вы можете дать ему специальную функцию JavaScript, которая использует jQuery и возвращает true или false через аргумент. Вы можете использовать этот элемент управления для автоматического отображения сообщения об ошибке или просто запустить код jQuery и обработать отображение вручную.
Aspx:
<asp:CustomValidator ID = "CustomValidator1" runat = "server" Display = "None"
ClientValidationFunction = "checkTextareaLengths">
</asp:CustomValidator>
JavaScript:
function checkTextareaLengths(source, args){
args.IsValid = true;
$('textarea').each(function(){
if ($(this).text().lenght > 400)
args.IsValid = false;
});
}
@chris - Совершенно верно - я знаю, что знаю. Знаете что, я обновлю ответ!
@chris - Готово! В свою защиту я смутно помню, что возвращение true или false действительно сработало для меня, но это официальный метод, и он определенно лучше (я очень надеюсь, что не рекомендовал ничего глупого - этот вопрос получил 5700 просмотров!). Спасибо.
Кроме того, я бы изменил "arguments" на "args", чтобы его не путали с ключевым словом arguments в javascript ...
Валидатор ASP.NET - это диапазон с дополнительными атрибутами. С помощью jquery вы можете получить доступ ко всем валидаторам на странице или отфильтровать их по любым критериям. поддерживается jquery. Для принудительной проверки с помощью javascript вызовите функцию ValidatorValidate. Например:
function validate_step(step_element) {
// find all validators on step_element and force validation
var validators = $(step_element).find("span[controltovalidate]");
var stepIsValid = true;
validators.each( function() {
ValidatorValidate(this); stepIsValid &= this.isvalid;
});
return stepIsValid;
}
Примечание: я не думаю, что сработает просто возврат true или false - вам нужно принять 2 параметра функции (отправитель, args) и установить args.IsValid = ok; в конце, чтобы хорошо поработать со средой проверки веб-форм.