ASP.NET Web Forms Validation 服务器控件是用来验证用户输入的
Validation 服务器控件
Validation 服务器控件用于验证输入控件的数据
如果数据未通过验证,则向用户显示错误消息
语法
创建 Validation 服务器控件的语法如下
<asp:control_name id="some_id" runat="server" />
ASP.NET 常用的 Validation 服务器控件
Validation 服务器控件 | 描述 |
---|---|
CompareValidator | 把一个输入控件的值与另一个输入控件的值或一个固定的值进行对比 |
CustomValidator | 自定义一个方法,来处理输入值的验证 |
RangeValidator | 检查用户输入值是否介于两个值之间 |
RegularExpressionValidator | 确保输入控件的值匹配指定的模式 |
RequiredFieldValidator | 使输入控件成为必需(必填)的字段 |
ValidationSummary | 显示网页中所有验证错误的报告 |
ASP.NET CompareValidator 控件
ASP.NET CompareValidator 控件用于将一个输入控件的值与另一个输入控件的值或常数值进行比较
如果输入控件为空,则不会调用任何验证函数,并且验证将成功,可以使用 RequiredFieldValidator 控件使字段必填
属性
属性 | 描述 |
---|---|
BackColor | CompareValidator 控件的背景颜色 |
ControlToCompare | 要与所验证的控件进行比较的控件名称 |
ControlToValidate | 要验证的控件的 id |
Display | 验证控件的显示行为。合法值有: None - 控件不显示。仅用于 ValidationSummary 控件中显示错误消息 Static - 如果验证失败,控件显示错误消息。即使输入通过验证,也在页面上预留显示消息的空间,即用于显示消息的空间是预先分配好的 Dynamic - 如果验证失败,控件显示错误消息。如果输入通过验证,页面上不预留显示消息的空间,即用于显示消息的空间是动态添加的 |
EnableClientScript | 布尔值,规定是否启用客户端验证 |
Enabled | 布尔值,规定是否启用验证控件 |
ErrorMessage | 当验证失败时,在 ValidationSummary 控件中显示的文本 如果未设置 Text 属性,文本也会显示在验证控件中 |
ForeColor | 控件的前景颜色 |
id | 控件的唯一 id |
IsValid | 布尔值,指示由 ControlToValidate 指定的控件是否通过验证 |
Operator | 要执行的比较操作的类型。运算符有: Equal GreaterThan GreaterThanEqual LessThan LessThanEqual NotEqual DataTypeCheck |
runat | 规定控件是服务器控件。必须设置为 "server" |
Text | 当验证失败时显示的消息 |
Type | 规定要对比的值的数据类型。类型有: Currency Date Double Integer String |
ValueToCompare | 一个常数值,该值要与由用户输入到所验证的输入控件中的值进行比较 |
范例
CompareValidator
<!DOCTYPE html>
<meta charset="utf-8" />
<form runat="server">
<table border="0" bgcolor="#b0c4de">
<tr valign="top">
<td colspan="4"><h4>Compare two values</h4></td>
</tr>
<tr valign="top">
<td><asp:TextBox id="txt1" runat="server" /></td>
<td> = </td>
<td><asp:TextBox id="txt2" runat="server" /></td>
<td><asp:Button Text="Validate" runat="server" /></td>
</tr>
</table>
<br>
<asp:CompareValidator
id="compval"
Display="dynamic"
ControlToValidate="txt1"
ControlToCompare="txt2"
ForeColor="red"
BackColor="yellow"
Type="String"
EnableClientScript="false"
Text="Validation Failed!"
runat="server" />
</form>
这个范例中,我们在 .aspx 文件中声明了两个 TextBox 控件,一个 Button 控件,和一个 CompareValidator 控件如果验证失败,将在 CompareValidator 控件中使用黄色背景红色字体显示 "Validation Failed!" 文本
CompareValidator 2
<script runat="server">
sub check_operator(sender As Object, e As EventArgs)
compval.Operator=CType(list.SelectedIndex,ValidationCompareOperator)
compval.Validate()
end sub
</script>
<!DOCTYPE html>
<meta charset="utf-8" />
<form runat="server">
<table border="0" bgcolor="#b0c4de">
<tr valign="top">
<td colspan="4"><h4>Compare two values</h4></td>
</tr>
<tr valign="top">
<td><asp:TextBox id="txt1" runat="server" /></td>
<td>
<asp:ListBox id="list" rows="2" OnSelectedIndexChanged="check_operator" runat="server">
<asp:ListItem value="Equal" selected>=</asp:ListItem>
<asp:ListItem value="NotEqual"><></asp:ListItem>
</asp:ListBox>
</td>
<td><asp:TextBox id="txt2" runat="server" /></td>
<td><asp:Button Text="Validate" runat="server" /></td>
</tr>
</table>
<br>
<asp:CompareValidator
id="compval"
Display="dynamic"
ControlToValidate="txt1"
ControlToCompare="txt2"
ForeColor="red"
BackColor="yellow"
Type="String"
EnableClientScript="false"
Text="Validation Failed!"
runat="server" />
</form>
- 在这个范例中,我们在 .aspx 文件中声明了两个 TextBox 控件,一个 ListBox 控件,一个 Button 控件,和一个 CompareValidator 控件check_operator() 函数把 ListBox 控件中选取的运算符设置为 CompareValidator 控件的运算符,然后对 CompareValidator 控件进行验证如果验证失败,将在 CompareValidator 控件中使用黄色背景红色字体显示 "Validation Failed!" 文本
ASP.NET CustomValidator 控件
ASP.NET CustomValidator 控件允许自定义处理输入值验证的方法
属性
属性 | 描述 |
---|---|
BackColor | CustomValidator 控件的背景颜色 |
ClientValidationFunction | 规定要被执行的客户端脚本函数的名称。注释:脚本必须用浏览器支持的语言编写,比如 VBScript 或 JScript使用 VBScript 时,函数必须位于表单内:Sub FunctionName (source, arguments)使用 JScript 时,函数必须位于表单内:Function FunctionName (source, arguments) |
ControlToValidate | 要验证的控件的 id |
Display | 验证控件的显示行为。合法值有: None - 控件不显示。仅用于 ValidationSummary 控件中显示错误消息 Static - 如果验证失败,控件显示错误消息。即使输入通过验证,也在页面上预留显示消息的空间,即用于显示消息的空间是预先分配好的 Dynamic - 如果验证失败,控件显示错误消息。如果输入通过验证,页面上不预留显示消息的空间,即用于显示消息的空间是动态添加的 |
EnableClientScript | 布尔值,规定是否启用客户端验证 |
Enabled | 布尔值,规定是否启用验证控件 |
ErrorMessage | 当验证失败时,在 ValidationSummary 控件中显示的文本。注释:如果未设置 Text 属性,文本也会显示在验证控件中 |
ForeColor | 控件的前景色 |
id | 控件的唯一 id |
IsValid | 布尔值,指示由 ControlToValidate 指定的控件是否通过验证 |
OnServerValidate | 规定被执行的服务器端验证脚本函数的名称 |
runat | 规定该控件是服务器控件。必须设置为 "server" |
Text | 当验证失败时显示的消息 |
范例
CustomValidator
<script runat="server">
Sub user(source As object,args As ServerValidateEventArgs)
if len(args.Value)<8 or len(args.Value)>16 then
args.IsValid=false
else
args.IsValid=true
end if
End Sub
</script>
<!DOCTYPE html>
<meta charset="utf-8" />
<form runat="server">
<asp:Label runat="server" Text="Enter a username: " />
<asp:TextBox id="txt1" runat="server" />
<asp:Button Text="Submit" runat="server"/>
<br>
<asp:Label id="mess" runat="server"/>
<br>
<asp:CustomValidator
ControlToValidate="txt1"
OnServerValidate="user"
Text="A username must be between 8 and 16 characters!"
runat="server"/>
</form>
在这个范例中,我们在 .aspx 文件中声明了两个 Label 控件,一个 TextBox 控件,一个 Button 控件,和一个 CustomValidator 控件user() 函数可检测输入值的长度如果长度小于 8 或大于 16,将在 CustomValidator 控件中显示文本 "A username must be between 8 and 16 characters!"
ASP.NET RangeValidator 控件
ASP.NET RangeValidator 控件用于检测用户输入的值是否介于两个值之间
可以对不同类型的值进行比较,比如数字、日期和字符
如果输入控件为空,验证不会失败,请使用 RequiredFieldValidator 控件,使字段必填
如果输入值无法转换为指定的数据类型,验证不会失败,请使用 CompareValidator 控件,将其 Operator 属性设置为 ValidationCompareOperator.DataTypeCheck,这样就可以校验输入值的数据类型了
属性
属性 | 描述 |
---|---|
BackColor | RangeValidator 控件的背景颜色 |
ControlToValidate | 要验证的控件的 id |
Display | 验证控件的显示行为。合法值有: None - 控件不显示。仅用于 ValidationSummary 控件中显示错误消息 Static - 如果验证失败,控件显示错误消息。即使输入通过验证,也在页面上预留显示消息的空间,即用于显示消息的空间是预先分配好的 Dynamic - 如果验证失败,控件显示错误消息。如果输入通过验证,页面上不预留显示消息的空间,即用于显示消息的空间是动态添加的 |
EnableClientScript | 布尔值,规定是否启用客户端验证 |
Enabled | 布尔值,规定是否启用验证控件 |
ErrorMessage | 当验证失败时,在 ValidationSummary 控件中显示的文本。注释:如果未设置 Text 属性,文本也会显示在验证控件中 |
ForeColor | 控件的前景颜色 |
id | 控件的唯一 id |
IsValid | 布尔值,指示由 ControlToValidate 指定的控件是否通过验证 |
MaximumValue | 规定输入控件的最大值 |
MinimumValue | 规定输入控件的最小值 |
runat | 规定该控件是一个服务器控件。必须设置为 "server" |
Type | 规定要检测的值的数据类型。类型有:CurrencyDateDoubleIntegerString |
Text | 当验证失败时显示的消息 |
范例
RangeValidator
<!DOCTYPE html>
<meta charset="utf-8" />
<form runat="server">
Enter a date between 2005-01-01 and 2005-12-31:
<br>
<asp:TextBox id="tbox1" runat="server" />
<br><br>
<asp:Button Text="Submit" runat="server" />
<br><br>
<asp:RangeValidator
ControlToValidate="tbox1"
MinimumValue="2005-01-01"
MaximumValue="2005-12-31"
Type="Date"
EnableClientScript="false"
Text="The date must be between 2005-01-01 and 2005-12-31!"
runat="server" />
</form>
本范例中,我们在 .aspx 文件中声明了一个 TextBox 控件,一个 Button 控件,和一个 RangeValidator 控件如果验证失败,将在 RangeValidator 控件中显示文本 "The date must be between 1/1/2002 and 31/5/2002!"
RangeValidator 2
<script runat="server">
Sub submit(sender As Object, e As EventArgs)
If Page.IsValid Then
lbl1.Text="Page is valid."
Else
lbl1.Text="Page is not valid!!"
End If
End Sub
</script>
<!DOCTYPE html>
<meta charset="utf-8" />
<form runat="server">
Enter a number from 1 to 100:
<asp:TextBox id="tbox1" runat="server" />
<br><br>
<asp:Button Text="Submit" OnClick="submit" runat="server" />
<br><br>
<asp:Label id="lbl1" runat="server" />
<br>
<asp:RangeValidator
ControlToValidate="tbox1"
MinimumValue="1"
MaximumValue="100"
Type="Integer"
EnableClientScript="false"
Text="The value must be from 1 to 100!"
runat="server" />
</form>
范例中,我们在 .aspx 文件中声明了一个 TextBox 控件,一个 Button 控件,一个 Label 控件,和一个 RangeValidator 控件。submit() 函数可检测页面是否有效如果有效,则在 Label 控件中返回 "The page is valid!"如果无效,则在 Label 控件中返回 "The page is not valid!"如果验证失败,则在 RangeValidator 控件中显示 "The value must be from 1 to 100!"
ASP.NET RegularExpressionValidator 控件
ASP.NET RegularExpressionValidator 控件用于验证输入值是否匹配指定的模式
除非浏览器不支持客户端验证或 EnableClientScript 属性被设置为 false,否则将同时执行服务器端和客户端验证
如果输入控件为空,验证将失败,可以使用 RequiredFieldValidator 控件,使字段必填
属性
属性 | 描述 |
---|---|
BackColor | RegularExpressionValidator 控件的背景颜色 |
ControlToValidate | 要验证的控件的 id |
Display | 验证控件的显示行为。合法值有: None - 控件不显示。仅用于 ValidationSummary 控件中显示错误消息 Static - 如果验证失败,控件显示错误消息。即使输入通过验证,也在页面上预留显示消息的空间,即用于显示消息的空间是预先分配好的 Dynamic - 如果验证失败,控件显示错误消息。如果输入通过验证,页面上不预留显示消息的空间,即用于显示消息的空间是动态添加的 |
EnableClientScript | 布尔值,规定是否启用客户端验证 |
Enabled | 布尔值,规定是否启用验证控件 |
ErrorMessage | 当验证失败时,在 ValidationSummary 控件中显示的文本 如果未设置 Text 属性,文本也会显示在验证控件中 |
ForeColor | 控件的前景颜色 |
id | 控件的唯一 id |
IsValid | 布尔值,指示由 ControlToValidate 指定的控件是否通过验证 |
runat | 规定该控件是一个服务器控件。必须设置为 "server" |
BackColor | RegularExpressionValidator 控件的背景颜色 |
Text | 当验证失败时显示的消息 |
ValidationExpression | 规定验证输入控件的正则表达式。在客户端和服务器上,表达式的语法是不同的。JScript 用于客户端。在服务器上,根据你规定的语言使用 |
范例
RegularExpressionValidator
<script runat="server">
sub submit(sender As Object, e As EventArgs)
if Page.IsValid then
lbl.Text="The page is valid!"
else
lbl.Text="The page is not valid!"
end if
end sub
</script>
<!DOCTYPE html>
<meta charset="utf-8" />
<form runat="server">
Enter a US zip code:
<asp:TextBox id="txtbox1" runat="server" />
<br><br>
<asp:Button text="Submit" OnClick="submit" runat="server" />
<br><br>
<asp:Label id="lbl" runat="server" />
<br>
<asp:RegularExpressionValidator
ControlToValidate="txtbox1"
ValidationExpression="\d{5}"
EnableClientScript="false"
ErrorMessage="The zip code must be 5 numeric digits!"
runat="server" />
</form>
范例中,我们在 .aspx 文件中声明了一个 TextBox 控件,一个 Button 控件,一个 Label 控件,和一个 RegularExpressionValidator 控件。submit() 函数检测页面是否有效如果有效,则在 Label 控件中返回 "The page is valid!"如果无效,则在 Label 控件中返回 "The page is not valid!"如果验证失败,将在 RegularExpressionValidator 控件中显示文本 "The zip code must be 5 numeric digits!"
ASP.NET RequiredFieldValidator 控件
RequiredFieldValidator 控件用于使输入控件成为一个必需(必填)的字段
通过该控件,如果输入值的初始值未改变,则验证失败。默认情况下,初始值是空字符串 ("")
输入值的开头和结尾的空格将在验证前被移除
InitialValue 属性不为输入控件设置默认值。它指示了您 不希望 用户在输入控件中输入的值
属性
属性 | 描述 |
---|---|
BackColor | RequiredFieldValidator 控件的背景颜色 |
ControlToValidate | 要验证的控件的 id |
Display | 验证控件的显示行为。合法值有 None - 控件不显示。仅用于 ValidationSummary 控件中显示错误消息 Static - 如果验证失败,控件显示错误消息。即使输入通过验证,也在页面上预留显示消息的空间,即用于显示消息的空间是预先分配好的 Dynamic - 如果验证失败,控件显示错误消息。如果输入通过验证,页面上不预留显示消息的空间,即用于显示消息的空间是动态添加的 |
EnableClientScript | 布尔值,规定是否启用客户端验证 |
Enabled | 布尔值,规定是否启用验证控件 |
ErrorMessage | 当验证失败时,在 ValidationSummary 控件中显示的文本 如果未设置 Text 属性,文本也会显示在验证控件中 |
ForeColor | 控件的前景颜色 |
id | 控件的唯一 id |
InitialValue | 定输入控件的初始值(开始值)。默认是 "" |
IsValid | 布尔值,指示由 ControlToValidate 指定的控件是否通过验证 |
runat | 规定该控件是一个服务器控件。必须设置为 "server" |
Text | 当验证失败时显示的消息 |
范例
RequiredFieldValidator
<!DOCTYPE html>
<meta charset="utf-8">
<form runat="server">
Name: <asp:TextBox id="name" runat="server" />
<br>
Age: <asp:TextBox id="age" runat="server" />
<br><br>
<asp:Button runat="server" Text="Submit" />
<br><br>
<asp:RequiredFieldValidator
ControlToValidate="name"
Text="The name field is required!"
runat="server" />
</form>
范例中,我们在 .aspx 文件中声明了两个 TextBox 控件,一个 Button 控件,和一个 RequiredFieldValidator 控件它演示了如何使用 RequiredFieldValidator 控件使 "txt_name" 文本框成为必需(必填)的字段
ASP.NET ValidationSummary 控件
ValidationSummary 控件用于显示网页中所有验证错误的摘要
在该控件中显示的错误消息是由每个验证控件的 ErrorMessage 属性规定的
如果未设置验证控件的 ErrorMessage 属性,就不会为那个验证控件显示错误消息
属性
属性 | 描述 |
---|---|
DisplayMode | 如何显示摘要。合法值有: Bullet List ListSingleParagraph |
EnableClientScript | 布尔值,规定是否启用客户端验证 |
Enabled | 布尔值,规定是否启用验证控件 |
ForeColor | 控件的前景颜色 |
HeaderText | ValidationSummary 控件中的标题文本 |
id | 控件的唯一 id |
runat | 规定该控件是一个服务器控件。必须设置为 "server" |
ShowMessageBox | 布尔值,规定是否在消息框中显示验证摘要 |
ShowSummary | 布尔值,规定 ValidationSummary 控件是否显示或者隐藏 |
范例
Validationsummary
<!DOCTYPE html>
<meta charset="utf-8" />
<form runat="server">
<table>
<tr>
<td>
<table bgcolor="#b0c4de" cellspacing="10">
<tr>
<td align="right">Name:</td>
<td><asp:TextBox id="txt_name" runat="server"/></td>
<td>
<asp:RequiredFieldValidator
ControlToValidate="txt_name"
ErrorMessage="Name"
Text="*"
runat="server"/>
</td>
</tr>
<tr>
<td align="right">Card Type:</td>
<td>
<asp:RadioButtonList id="rlist_type"
RepeatLayout="Flow"
runat="server">
<asp:ListItem>Diners</asp:ListItem>
<asp:ListItem>MasterCard</asp:ListItem>
<asp:ListItem>Visa</asp:ListItem>
</asp:RadioButtonList>
</td>
<td>
<asp:RequiredFieldValidator
ControlToValidate="rlist_type"
ErrorMessage="Card Type"
InitialValue=""
Text="*"
runat="server"/>
</td>
</tr>
<tr>
<td></td>
<td><asp:Button id="b1" Text="Submit" runat="server"/></td>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<asp:ValidationSummary
HeaderText="You must enter a value in the following fields:"
DisplayMode="BulletList"
EnableClientScript="true"
runat="server"/>
</form>
范例中,我们使用 ValidationSummary 控件生成了一个留空供用户填写的必填字段的列表
Validationsummary 2
<!DOCTYPE html>
<meta charset="utf-8" />
<form runat="server">
<table>
<tr>
<td>
<table bgcolor="#b0c4de" cellspacing="10">
<tr>
<td align="right">Name:</td>
<td><asp:TextBox id="txt_name" runat="server"/></td>
<td>
<asp:RequiredFieldValidator
ControlToValidate="txt_name"
ErrorMessage="Name"
Text="*"
runat="server"/>
</td>
</tr>
<tr>
<td align="right">Card Type:</td>
<td>
<asp:RadioButtonList id="rlist_type"
RepeatLayout="Flow"
runat="server">
<asp:ListItem>Diners</asp:ListItem>
<asp:ListItem>MasterCard</asp:ListItem>
<asp:ListItem>Visa</asp:ListItem>
</asp:RadioButtonList>
</td>
<td>
<asp:RequiredFieldValidator
ControlToValidate="rlist_type"
ErrorMessage="Card Type"
InitialValue=""
Text="*"
runat="server"/>
</td>
</tr>
<tr>
<td></td>
<td><asp:Button id="b1" Text="Submit" runat="server"/></td>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
<asp:ValidationSummary
ShowMessageBox="true"
ShowSummary="false"
HeaderText="You must enter a value in the following fields:"
EnableClientScript="true"
runat="server"/>
</form>
范例中,我们使用 ValidationSummary 控件显示了一个留空供用户填写的必填字段的消息框