如何才能最好地将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'的网站,没有时间去研究那些有趣的新东西。
答案 0 :(得分:12)
ASP.NET有许多验证控件,其中一个是CustomValidator
您可以为其提供一个使用jQuery的自定义JavaScript函数,并通过参数返回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;
});
}
答案 1 :(得分:5)
ASP.NET webforms和jQuery的验证模型非常非常相似,恕我直言,因为它们都是客户端,而实现其中一个并不一定会破坏另一个。唯一真正的区别在于,在幕后,如果您有一个未经验证的字段,ASP.NET验证器将导致Page.Validate()
方法返回false。
您可以选择手动滚动自己的验证控件,然后导致相同的行为,但正如您自己所说的,这可能是过度的。
jQuery也有自己的Validator插件,你可能想看一下:http://docs.jquery.com/Plugins/Validation/Validator。
答案 2 :(得分:5)
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;
}