16 ValidationSummary
- 使用Validator错误消息会显示在放置控件的位置,这样就有可能表单非常大,用户看不到全部的提示信息。还有可能是错误信息太多散落各地,用户不便观看,希望能集中显示于某区域。
- ValidationSummary控件用来集中显示错误消息。每个验证控件都有ErrorMessage和Text属性,ErrorMessage是用来显示到ValidationSummary中的值,Text是用来显示到VAlidator位置的值。如果Text为空,则ErrorMessage会同时显示到ValidationSummary和控件的位置,能知道指的是哪个控件;ErrorMessage一般显示的详细些,比如用户名不能为空等,text简短些,比如一个*号,这样才能从ValidationSummary每条错误信息中读取值出来。
- ValidationSummary的DisplayMode显示模式,主要是显示的样式不一样。还有ShowMessageBox,如果此值为True时,会弹出窗口把错误信息显示出来。
实例:
在表单中放入textbox控件,主要用于输入
- 用户名:不能为空,用到RequiredFieldValidator
- 性别: DropdownList,默认显示"--请选择性别--",主要设置RequiredFieldValidator的InitialValue。
- 工资:主要用到RangeValidator,它的范围为5000-20000,数据类型为Currency;
- 入职日期:与2011-04-01日期比较,主要用到CompareValidator,为值比较。
- 转正日期:与入职日期比较,主要用到CompareValidator,与其它控件比较。
- 邮箱: 主要用到RegularExpressionValidator,设置它的ValidationExprission的正则表达式。
- 放上ValidationSummary汇总验证控件,你会发现有些错误信息会显示于它上面。
- 统一设置Text为*号,ErrorMessage可以自行设置。
界面截图:
aspx源码:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> .error li{color:Red;} </style> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="用户名:"></asp:Label> <asp:TextBox ID="txtUser" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtUser" ErrorMessage="用户名不能为空">*</asp:RequiredFieldValidator> <br /> <asp:Label ID="Label2" runat="server" Text="性别:"></asp:Label> <asp:DropDownList ID="ddGender" runat="server"> <asp:ListItem>--请选择性别--</asp:ListItem> <asp:ListItem>男</asp:ListItem> <asp:ListItem>女</asp:ListItem> <asp:ListItem>保密</asp:ListItem> </asp:DropDownList> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="ddGender" ErrorMessage="请选择性别" InitialValue="--请选择性别--">*</asp:RequiredFieldValidator> <br /> 工资:<asp:TextBox ID="txtSalary" runat="server"></asp:TextBox> <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txtSalary" ErrorMessage="工资范围5000-20000" MaximumValue="20000" MinimumValue="5000" Type="Currency">*</asp:RangeValidator> <br /> 入职日期:<asp:TextBox ID="txtIN" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtIN" ErrorMessage="请输入入职日期">*</asp:RequiredFieldValidator> <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="txtIN" ErrorMessage="入职日期必须大于2011-4-1" Operator="GreaterThanEqual" Type="Date" ValueToCompare="2011-4-1">*</asp:CompareValidator> <br /> 转正日期:<asp:TextBox ID="txtNew" runat="server"></asp:TextBox> <asp:CompareValidator ID="CompareValidator2" runat="server" ControlToCompare="txtIN" ControlToValidate="txtNew" ErrorMessage="转正日期必须大于或等于入职日期" Operator="GreaterThanEqual" Type="Date">*</asp:CompareValidator> <br /> 邮箱:<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox> <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtEmail" ErrorMessage="邮箱格式不正确" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*</asp:RegularExpressionValidator> <br /> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> <br /> <asp:ValidationSummary ID="ValidationSummary1" runat="server" CssClass="error" ShowMessageBox="True" /> </div> </form> </body> </html>
button的cs码:
protected void Button1_Click(object sender, EventArgs e) { if (!Page.IsValid) return; Response.Write("数据更新成功."); }