将ASP.NETvalidation与JQuery结合的优雅方法

如何才能最好地将JQuery与ASP.NET客户端validation模型相结合?

我一般都避免实现ASP.NETvalidation模型,因为它对我所做的事情似乎总是有些过分。 对于我现在正在处理的网站,我只是收集非关键用户数据,只需要一些基本的validation。 我不希望消息出现在DOM或类似的东西中。 无论如何,我总是觉得很难让它看起来正确。

但我现在需要实现一些更优雅的东西。 我想在JQuery中利用的是聪明的搜索表达式,比如“告诉我是否至少选中了其中一​​个复选框”。 我是JQuery的新手,但我认为这是一行JQuery,而且在传统的ASP.NET模型中要复杂得多。

所以我想充分利用JQuery的能力,但不能完全取消ASP.NET的validation模型。

到目前为止,我最好的方法是这个(它几乎落后于ASP.NET):

$('#').bind('click', function(event) { if (...) { alert("You must enter a name"); return false; } return true; }); 

这里有什么更好的方法? 有没有推荐的JQuery插件?

PS。 我不想使用MVC模型。 我正在尝试创建一个非常“RAD”的网站,没有时间去研究那些有趣的新东西。

ASP.NET有许多validation控件,其中一个是CustomValidator
您可以为其提供一个使用jQuery的自定义JavaScript函数,并通过参数返回truefalse 。 您可以使用此控件自动显示错误消息,或者只运行jQuery代码并手动处理显示。

ASPX:

   

JavaScript的:

 function checkTextareaLengths(source, args){ args.IsValid = true; $('textarea').each(function(){ if($(this).text().lenght > 400) args.IsValid = false; }); } 

ASP.NET webforms和jQuery的validation模型非常非常相似,恕我直言,因为它们都是客户端,而实现其中一个并不一定会破坏另一个。 唯一真正的区别在于,在幕后,如果您有一个未经validation的字段,ASP.NETvalidation器将导致Page.Validate()方法返回false。

您可以选择手动滚动自己的validation控件,然后导致相同的行为,但正如您自己所说,这可能是过度的。

jQuery也有自己的Validator插件,您可能需要查看它: http : //docs.jquery.com/Plugins/Validation/Validator 。

ASP.NETvalidation器是具有其他属性的跨度。 使用jquery,您可以访问页面上的所有validation器,或者按照jquery支持的任何条件对它们进行过滤。 通过javascript调用ValidatorValidate函数强制validation。 例如:

 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; }