什么是客户端验证:
在Web应用程序中,用户期望得到即时的验证反馈-------对服务器不做任何的提交.这通常数用JavaScript实现的.
用户输入的数据在被提交到服务器之前就进行验证,给用户提供即时的反馈,并修正错误的机会.
MVC框架支持非唐突客户端验证,那什么是"非唐突(Unobtrusive)”:在生成HTML元素上添加验证属性来表示验证规则.
这些验证规则由包含在MVC框架中的JavaScript库进行解释,框架用属性值来配置JQuery验证库,并由该验证库完成实际的工作.
"非唐突"在JavaScript中用的很多,它是个宽泛的术语,具有三个关键特征:
1.执行验证的JavaScript与HTML元素保持分离的. 可以不把客户端验证逻辑包含到视图中,而使所生成的HTML更加易读.
2.使用渐进式增强的方式执行验证.意思是:如果用户浏览器不支持客户端验证所需要的所有JavaScript特性,那么,验证会使用更简单的技术来执行.例如:如果用户已经禁用了JavaScript,那么服务器验证将被无缝地执行,用户不会受到任何处罚(没有不愉快的错误消息,或者要求采用特殊的步骤).
3.有一组最优方法来减轻浏览器不一致性效果和行为.
怎么来启用和禁用客户端验证?
启用验证:
方法一:在应用程序的Web.Config文件中的2个设置来控制.(ClientValidationEnabled和UnobtrusiveJavaScriptEnabled)
这2个设置项目都必须设置为”true”
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
方法二:在Global.asax中用代码来控制这些设置.(调用HtmlHelper上的属性来控制)
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{AreaRegistration.RegisterAllAreas();
HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
同时也可以对单个视图启用或禁用客户端验证,这样会重写之前的设置选项.(同样是调用HtmlHelper的属性)
@{
ViewBag.Title = "Movies";
HtmlHelper.ClientValidationEnabled = false;
}
//....
禁用验证:
为了使客户端验证起到左右,这些设置都必须设置为”true”,这就意味着禁用验证只要把其中的一个设置设置为”false”.
前提条件:
保证3个特定的JavaScript库必须引用:分别是:
Jquery-{version}.min.js, // {version}是随着版本增加而变化)
jquery.validate.min.js,
jquery.validate.unobtrusive.min.js
这个三个文件的引用顺序很重要,如果改变这个顺序,你会发现客户端验证不会执行.
使用客户端验证
一旦启用了客户端验证,并确保视图中引用了JQuery库.就可以开始执行客户端验证了.
待续