我在MVC3应用程序中使用不显眼的验证。对于一种形式,我需要进行一些非常复杂的验证。因此,我想我可以使用常规的jQuery验证插件。当使用自定义验证脚本并且页面中包含对jQuery.validate.unobtrusive.js
的引用时,自定义验证脚本将始终有效!
创建测试html文件(包括jquery.validate.js
,jquery.unobtrusive-ajax.js
和jquery.validate.unobtrusive.js
)。提交以下表单时,将不会执行验证检查 。删除对jquery.validate.unobtrustive.js
的脚本引用会使它们再次运行。有一个简单的方法吗?
<!DOCTYPE html>
<html>
<head>
<title>Test Jquery</title>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript" src="jquery.unobtrusive-ajax.js"></script>
<script type="text/javascript" src="jquery.validate.unobtrusive.js"></script>
<script type="text/javascript">
$(function ()
{
var result = $("#commentForm").validate({
rules:
{
name: "required",
email: {
required: true,
email: true
},
comment: "required"
}
});
});
</script>
</head>
<body>
<form id="commentForm" method="get" action="">
<fieldset>
<legend>A simple comment form with submit validation and default messages</legend>
<p>
<label for="cname">Name</label>
<em>*</em><input id="cname" name="name" size="25" />
</p>
<p>
<label for="cemail">E-Mail</label>
<em>*</em><input id="cemail" name="email" size="25" />
</p>
<p>
<label for="ccomment">Your comment</label>
<em>*</em><textarea id="ccomment" name="comment" cols="22"></textarea>
</p>
<p>
<input class="submit" type="submit" value="Submit" />
</p>
</fieldset>
</form>
</body>
</html>
答案 0 :(得分:1)
使用ASP.NET MVC 3不显眼的客户端验证时,您不应该像编写自定义规则一样编写自定义规则。此外,您似乎已将jquery.validate.js
脚本包含两次,并且jquery.unobtrusive-ajax.js
脚本不是客户端验证所必需的。您应该在模型上使用DataAnnotations来指示验证规则,对于更复杂的场景,当您需要自定义规则时,您可以实现IClientValidatable
接口并将自定义适配器附加到jquery validate插件。您可以查看以下答案来说明这一概念:answer 1和后续answer 2。