当错误信息出现在页上时,它成为页布局的一部分。您需要设计页的布局以放置可能出现的任何错误文本。
如果验证在服务器上执行,则除非出现错误,否则验证控件不会呈现到页,并因此不会占用任何空间。如果出现错误,页将在往返期间重新创建,并将错误文本添加到页。
如果用户具有支持动态 HTML (DHTML) 验证的浏览器,则验证可以在客户端上动态发生。此时,将会立即出现就地错误信息文本,并可能更改页的布局。
要控制如何显示客户端验证的错误信息文本,可以将验证控件的 Display 属性设置为以下三个选项之一:
布局选项 | 说明 |
即使没有可见错误信息文本,每个验证控件也将占用空间,允许您为页定义固定的布局。多个验证控件无法在页上占用相同空间,因此您必须在页上给每个控件留出单独的位置。这一设置只在 Internet Explorer 4.0 或更高版本中有效,在其他浏览器中该布局将变成 Dynamic。 | |
除非显示错误信息,否则验证控件将不会占用空间,这允许控件共用同一个位置(例如表的单元格)。但在显示错误信息时,页的布局将会更改,有时将导致控件更改位置。 | |
验证控件不在页上出现。 |
说明: 动态布局需要支持动态 HTML (DHTML) 的浏览器。如果您的 Web 应用程序将与不支持 DHTML 的浏览器一起使用,建议改为在一个表单元格或 Panel 控件中对验证控件进行布局。
一、如何:控制 ASP.NET 服务器控件的验证错误信息显示
显示方法 | 说明 |
内联 | 在控件旁边验证控件所在的位置显示错误信息。 |
摘要 | 在一个涵盖所有错误的单独摘要中显示错误信息,该方式只在用户提交页时可用。或者,可以在消息框中显示错误信息,但是此选项仅在支持动态 HTML (DHTML) 的浏览器中可用。 |
内联和摘要 | 同一错误信息的摘要显示和内联显示可能会有所不同。您可以使用此选项内联显示较为简短的错误信息,而在摘要中显示较为详细的信息,也可以在输入字段旁显示错误标志符号,而在摘要中显示错误信息。 |
自定义 | 您可以创建您自己的错误信息显示。 |
如果要显示错误信息摘要,您需要将控件添加到页。
1.1、显示错误信息摘要
1、将 ValidationSummary 控件添加到页中要显示收集的错误信息的位置上。
2、设置单个验证控件的 ErrorMessage 和 Display 属性。
3、若要格式化错误信息,请使用在 ValidationSummaryDisplayMode 枚举中定义的下面其中一个值来设置摘要控件的 DisplayMode 属性:
值 | 显示 |
BulletList | (默认值)每条错误信息都显示为单独的项。 |
List | 每条错误信息都显示在单独的行中。 |
SingleParagraph | 每条错误信息都显示为段落中的一个句子。 |
4、如果将单个验证控件与验证组关联,则需要对每个验证组使用一个 ValidationSummary 控件。
若要将错误信息内联显示以及显示为摘要,需要设置单个验证控件中属性的不同组合。
1.2、内联显示和摘要显示错误信息
1、按照前面步骤中所述添加一个 ValidationSummary 控件。
2、根据下表设置单个验证控件的 ErrorMessage、Text 和 Display 属性:
选项 | 需要 ValidationSummary 控件 | 验证控件上的属性设置 |
仅限内联 | 否 | Display = Static 或 Dynamic ErrorMessage = <错误文本> 或 Text = <错误文本> |
仅限摘要(含可选消息框) | 是 | Display = None ErrorMessage = <错误文本> 或 Text = <错误文本> |
内联和摘要(含可选消息框) | 是 | Display = Static 或 Dynamic ErrorMessage = <摘要的错误文本> Text = <内联错误文本或标志符号> |
如果客户端运行的浏览器支持 DHTML,则还可以在消息框中显示错误信息摘要。
1.3、在消息框中显示错误信息摘要
1、将 ValidationSummary 控件的 ShowMessageBox 属性设置为 true。用户提交页时,错误将同时显示在 ValidationSummary 控件和消息框中。
2、若要只在消息框中显示错误信息摘要,则将 ShowSummary 属性设置为 false。
二、如何:设置 ASP.NET 服务器控件的验证错误信息的格式
在使用 ASP.NET 验证控件时,您可以控制错误文本的格式(字体、大小等),还可以用标记来替代错误文本。例如,您可以使验证控件在发生错误时显示星号 (*)。
您还可以在验证控件的 ErrorMessage 属性中包含详细的错误消息,并将 ValidationSummary 控件添加到页。详细的 ErrorMessage 属性文本将出现在页中 ValidationSummary 控件的位置上。
通过在 ErrorMessage 和 Text 属性的文本中使用 HTML 元素,您可以提供错误消息中的格式设置。例如,要仅对错误消息中的一个词应用斜体格式,可以将该词置于 <i> 和 </i> 标记中。
说明: 要在错误消息文本中显示保留的 HTML 字符,只需对其进行编码即可。例如,要显示“<”,可使用字符序列 <。
如果显示的是验证错误摘要,您可以指定在单独验证控件的位置上显示标记。
2.1、设置错误消息的格式
设置验证控件的属性,如下所示:
属性 | 说明 |
错误消息文本的颜色。 | |
文本的背景色。 | |
字体的字形、大小、粗细等。 | |
错误消息的边框的大小和颜色。 | |
在用户使用支持 CSS 样式表的浏览器时使用的样式设置。 |
说明: 您使用这些属性所作的一些设置可能无法得到所有浏览器的支持。
2.2、在输入控件旁显示标记
将每一验证控件的 ErrorMessage 属性设置为应显示在 ValidationSummary 控件中的错误文本。
将每一验证控件的 Text 属性设置为要显示的标记。标记可以由任意有效的 HTML 构成,其中包括文本(例如星号)或图像。
说明: 标记将显示在验证控件的位置上。如何以上述正确显示标记的方式对验证控件进行布局,这完全取决于您。
三、如何:指定 ASP.NET 服务器控件上就地消息的布局
当 ASP.NET 验证错误信息出现在页上时,它成为页布局的一部分。您可以指定布局是固定的还是动态的。如果布局是固定的,则错误信息的出现不会更改页面布局。
将每个验证控件的 Display 属性设置为来自 ValidatorDisplay 枚举的下列值之一:
选项 | 说明 |
在您只使用摘要控件时使用 | |
用于固定布局 | |
用于动态布局 |
说明: 要查看静态布局,必须有支持动态 HTML (DHTML) 的浏览器。
四、如何:显示 ASP.NET 服务器控件的服务器端自定义验证消息
如果验证程序或页 IsValid 属性为 false,则不必使用验证控件输出响应。在客户端和服务器端,您都可以创建自定义响应,例如控件中的颜色更改或标签文本的字体更改。
显示自定义验证消息
1、在 Page_Load 事件处理程序中,调用验证控件或页的 Validate 方法。
2、检查验证控件或页的 IsValid 属性,按条件添加文本或控件,或者更改控件属性(例如颜色)。
下面的代码示例在 IsValid 属性为 true 时显示文本“All entries are valid”,在该属性为 false 时显示文本“There are one or more invalid entries”。
if (this.IsPostBack)
{
ValidationControl1.Validate();
if (ValidationControl1.IsValid)
{
lblOutput.Text = "All entries are valid.";
}
else
{
lblOutput.Text = "There are one or more invalid entries.";
}
}