数据验证涉及到很多方面的东西,在当前的技术领域里,从技术上来看可以说是分为传统的验证(同 步方式)和Ajax(异步方式)验证。如果从功能验证上来看的话就包罗万象了。比如非空验证,对等验证 ,格式验证等等。在.NET里还有专门用于验证的的几个常见验证控件,RequiredFieldValidator, RangeValidator,RegularExpressionValidator,CompareValidator,CustomValidator以及 ValidationSummary等,这里不讨论他们的使用及原理。
一. 传统的验证方式
在传统的验证中是采用同步表单提交的方法来处理的验证请求。这种验证方式的缺点很显然而知了。 表单提交一是传输的数据量比较大消耗资源,二是页面处于同步方式随着表单的提交会刷新页面。下面我 看来看看一个简单的传统验证的实例:
建议一个ASP.NET项目,将默认页面改名为:TraditValidation.aspx,在页面.cs里定义一个模拟数据 的方法如下:
1/**//// <summary>
2/// 模拟一个数据字典.判断用户名是否存在
3/// </summary>
4/// <param name="strUsername"></param>
5/// <returns></returns>
6private bool IsUsernameExist(string strUsername)
7{
8 bool bRet = false;
9
10 switch (strUsername.ToLower())
11 {
12 case "beniao":
13 case "java":
14 case "admin":
15 case "ajax":
16 case "aspnet":
17 bRet = true; break;
18 }
19 return bRet;
20}
接下来转到TraditValidation.aspx的html视图下,定义一个JavaScript方法来验证输入数据的合法性 。
<script language="javascript">
function checkFrm()
{
var tbUsername = document.getElementById("tbUsername");
var msg = document.getElementById("lblMessage");
var re = /^(\w{3,15})$/gim;
if (re.test(tbUsername.value))
{
return true;
}
else
{
msg.innerHTML = "长度必须在3到15之间,且不包含字母、数字和下划线以外的字符!";
msg.style.color = "red";
return false;
}
}
</script>