<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="此用户名已注册过" ControlToValidate = "txtName" OnServerValidate ="ValidateName">
</asp:CustomValidator>
,aspx.cs
public void ValidateName(Object sender, ServerValidateEventArgs args)
{
SqlConnection myConn = new SqlConnection("Data Source=(local);Initial Catalog=Csharp;Integrated Security=True");
myConn.Open();
SqlCommand myCmd = new SqlCommand("select use_account from users", myConn);
SqlDataAdapter myDa = new SqlDataAdapter(myCmd);
DataSet myDs = new DataSet();
myDa.Fill(myDs);
for (int i = 0; i < myDs.Tables[0].Rows.Count; i++)
{
if (args.Value.ToString() == myDs.Tables[0].Rows[i][0].ToString())
{
args.IsValid = false;
break;
}
else
{
args.IsValid = true;
}
}
}
通过自定义服务器端的函数代码,与前台验证控件关联 ,形成一种假客户端—当前页面验证的效果。
以上面前台验证控件这段代码为例:
ErrorMessage属性表示当验证不合法时,出现错误的信息;
ControlToValidate属性表示需验证的控件ID;
OnServerValidate属性表示与自定义函数相关联,以在服务器上执行验证;
ASP.Net提供了如下的验证控件:
RequiredFieldValidator:字段必填。
RangeValidator:值在给定的最大值、最小值之间;
CompareValidator:用于比较两个值的关系是否满足要求或者是否是指定类型的数据;
RegularExpressionValidat
CustomValidator:自定义验证。
RequiredFieldValidator
ControlToValidate设定要验证的控件,Text设置为当被验证的控件属性为空的时候显示的错误信息,Text不仅可以写普通文本,还可以写任何HTML内容。也可以使用ErrorMessage设置发送错误的时候显示的消息。
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="不能为空"></asp:RequiredFieldValidator>
有时候控件如果是默认值也认为是空值,比如下拉列表的选中值为”--选中性别--”,文本框的值为”填入搜索关键字”,只要将RequiredFieldValidator的InitialValue属性设置为” --选中性别--”、” 填入搜索关键字”就可以了。
<asp:TextBox ID="TextBox1" runat="server">请输入关键词</asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="不能为空"
InitialValue="请输入关键词”></asp:RequiredFieldValidator>
Validator共性
页面中的IsValid属性用来判断页面中的所有Validator是否校验通过,只有都校验通过才为True,即使页面中的Validator服务端校验报错(禁用javascript就可以跳过客户端校验),在服务端方法中的业务代码(比如btn1_Click)也会被执行,因此如果代码在数据校验不通过的不能执行则需要判断IsValid的值。