使用jQuery.Templates进行jQuery验证的场景
我正在为我正在工作的一系列站点使用jQuery模板,并且已经到了需要决定如何实现验证的地步,clientside。服务器端是一个Asp.NETMVC Restful服务,处理各种模型。模型用数据注释修饰以描述验证。下面是一个示例(请注意,我们正在使用一个资源文件进行错误复制): 以前,我只是使用Razor(或者在切换到Mvc 3之前使用的旧Asp.Net视图引擎),它负责生成jquery.validate.js所需的所有客户端装饰。现在我正在使用jQuery模板,这就不太可行了 我在这里看到三种选择:使用jQuery.Templates进行jQuery验证的场景,jquery,asp.net-mvc,asp.net-mvc-3,jquery-validate,jquery-templates,Jquery,Asp.net Mvc,Asp.net Mvc 3,Jquery Validate,Jquery Templates,我正在为我正在工作的一系列站点使用jQuery模板,并且已经到了需要决定如何实现验证的地步,clientside。服务器端是一个Asp.NETMVC Restful服务,处理各种模型。模型用数据注释修饰以描述验证。下面是一个示例(请注意,我们正在使用一个资源文件进行错误复制): 以前,我只是使用Razor(或者在切换到Mvc 3之前使用的旧Asp.Net视图引擎),它负责生成jquery.validate.js所需的所有客户端装饰。现在我正在使用jQuery模板,这就不太可行了 我在这里看到三种
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.js"></script>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"></script>
<script type="text/javascript">
$.extend($.validator.prototype, {
showLabel: function (element, message) {
$(element).siblings('.validationLabel').remove();
$('#tmplValidationLabel').tmpl({ Message: message }).insertAfter($(element));
}
});
</script>
</head>
<body>
<form>
<div><input type="text" name="Email" /></div>
<div><input type="text" name="SomeName" /></div>
<input type="submit" value="Submit" />
</form>
<script type="x-jquery-tmpl" id="tmplValidationLabel">
<span class="validationLabel">
<b>${Message}</b> <span> :( </span>
</span>
</script>
<script type="text/javascript">
$(function () {
$('form').validate({
rules: {
Email: { required: true, email: true },
SomeName: "required"
},
messages: {
Email: { required: "Enter Email", email: "Not an email" },
SomeName: "Enter something man!"
}
});
});
</script>
</body>
</html>
$.extend($.validator.prototype{
showLabel:功能(元素、消息){
$(元素)。同级('.validationLabel').remove();
$('#tmplValidationLabel').tmpl({Message:Message}).insertAfter($(元素));
}
});
${Message}:(
$(函数(){
$('form')。请验证({
规则:{
电子邮件:{required:true,Email:true},
SomeName:“必需”
},
信息:{
电子邮件:{必填:“输入电子邮件”,电子邮件:“非电子邮件”},
SomeName:“输入一些东西,伙计!”
}
});
});
希望有帮助
Chi我已经添加了我认为可以使用的方法,包括优点/缺点。我有一种感觉,我最终会回答我自己的问题:)。那很酷;我相信将来会有越来越多的.Net开发人员遇到这个问题。杜斯达:你不是唯一一个。我也有同样的问题。我正在考虑jQuery.validation的“prototype.showLabel”上的$.extend,其中标签是用我的.tmpl()代码生成的。如果我能让它工作,我会在这里发布。:)谢谢你,迟。我仍在为此开发“圣杯”解决方案,但还没有找到一个我满意的可重用模式。我确信客户端渲染是未来的趋势,web服务器将逐渐成为纯粹的ajax/websocket web服务,提供静态文件;只是要找到一种方法来组织这一切,这样我就不必重复我自己:)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.js"></script>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"></script>
<script type="text/javascript">
$.extend($.validator.prototype, {
showLabel: function (element, message) {
$(element).siblings('.validationLabel').remove();
$('#tmplValidationLabel').tmpl({ Message: message }).insertAfter($(element));
}
});
</script>
</head>
<body>
<form>
<div><input type="text" name="Email" /></div>
<div><input type="text" name="SomeName" /></div>
<input type="submit" value="Submit" />
</form>
<script type="x-jquery-tmpl" id="tmplValidationLabel">
<span class="validationLabel">
<b>${Message}</b> <span> :( </span>
</span>
</script>
<script type="text/javascript">
$(function () {
$('form').validate({
rules: {
Email: { required: true, email: true },
SomeName: "required"
},
messages: {
Email: { required: "Enter Email", email: "Not an email" },
SomeName: "Enter something man!"
}
});
});
</script>
</body>
</html>