ValidationSummary控件用于在页面中的一处地方显示所有验证错误的列表。这个控件在使用大的表单时特别有用。如果用户在页面底部的表单字段中输入了错误的值,那么这个用户可能永远也看不到错误信息。不过,如果使用ValidationSummary控件,就可以始终在表单的顶端显示错误列表。
你可能已经注意到每个验证控件都有ErrorMessage属性。我们原来不用ErrorMessage属性来表示验证错误信息,而使用Text属性。
ErrorMessage属性和Text属性的不同之处在于,赋值给ErrorMessage属性的信息显示在ValidationSummary控件中,而赋值给Text属性的信息显示在页面主体中。通常,需要保持Text属性的错误信息简短(例如“必填!”)。另一方面,赋值给ErrorMessage属性的信息应能识别有错误的表单字段(例如“名字是必填项!”)。
注解 如果不为Text属性赋值,那么ErrorMessage属性的值就会同时显示在ValidationSummary控件和页面主体中。
代码清单3-18中的页面展示了如何使用ValidationSummary控件以显示错误信息摘要(见图3-14)。
图3-14 显示验证摘要
代码清单3-18 ShowValidationSummary.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show ValidationSummary</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ValidationSummary
id="ValidationSummary1"
Runat="server" />
<asp:Label
id="lblFirstName"
Text="First Name:"
AssociatedControlID="txtFirstName"
Runat="server" />
<br />
<asp:TextBox
id="txtFirstName"
Runat="server" />
<asp:RequiredFieldValidator
id="reqFirstName"
Text="(Required)"
ErrorMessage="First Name is required"
ControlToValidate="txtFirstName"
Runat="server" />
<br /><br />
<asp:Label
id="lblLastName"
Text="Last Name:"
AssociatedControlID="txtLastName"
Runat="server" />
<br />
<asp:TextBox
id="txtLastName"
Runat="server" />
<asp:RequiredFieldValidator
id="reqLastName"
Text="(Required)"
ErrorMessage="Last Name is required"
ControlToValidate="txtLastName"
Runat="server" />
<br /><br />
<asp:Button
id="btnSubmit"
Text="Submit"
Runat="server" />
</div>
</form>
</body>
</html>
如果不输入名和姓就提交代码清单3-18中的表单,那么错误信息同时显示在页面主体和ValidationSummary控件中。
ValidationSummary控件支持下列属性:
q DisplayMode——用于指定如何格式化错误信息。可能的值有BulletList、List和SingleParagraph。
q HeaderText——用于在验证摘要上方显示标题文本。
q ShowMessageBox——用于显示一个弹出警告对话框。
q ShowSummary——用于隐藏页面中的验证摘要。
如果把ShowMessageBox属性设为True,并把ShowSummary属性设为False,那么验证摘要只显示在弹出的警告对话框中。例如,代码清单3-19中的页面在警告对话框中显示验证摘要(见图3-15)。
代码清单3-19 ShowSummaryPopup.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show Summary Popup</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ValidationSummary
id="ValidationSummary1"
ShowMessageBox="true"
ShowSummary="false"
Runat="server" />
<asp:Label
id="lblFirstName"
Text="First Name:"
AssociatedControlID="txtFirstName"
Runat="server" />
<br />
<asp:TextBox
id="txtFirstName"
Runat="server" />
<asp:RequiredFieldValidator
id="reqFirstName"
ErrorMessage="First Name is required"
ControlToValidate="txtFirstName"
Display="None"
Runat="server" />
<br /><br />
<asp:Label
id="lblLastName"
Text="Last Name:"
AssociatedControlID="txtLastName"
Runat="server" />
<br />
<asp:TextBox
id="txtLastName"
Runat="server" />
<asp:RequiredFieldValidator
id="reqLastName"
ErrorMessage="Last Name is required"
ControlToValidate="txtLastName"
Display="None"
Runat="server" />
<br /><br />
<asp:Button
id="btnSubmit"
Text="Submit"
Runat="server" />
</div>
</form>
</body>
</html>