BaseValidator 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用作验证控件的抽象基类。
public ref class BaseValidator abstract : System::Web::UI::WebControls::Label, System::Web::UI::IValidator
public abstract class BaseValidator : System.Web.UI.WebControls.Label, System.Web.UI.IValidator
type BaseValidator = class
inherit Label
interface IValidator
Public MustInherit Class BaseValidator
Inherits Label
Implements IValidator
- 继承
- 派生
- 实现
示例
下面的代码示例演示如何使用多个验证控件来验证用户是否在控件中 TextBox 输入了有效的值。
重要
此示例具有一个接受用户输入的文本框,这是一个潜在的安全威胁。 默认情况下,ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。 有关详细信息,请参阅脚本侵入概述。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void Button_Click(Object sender, EventArgs e)
{
if (Page.IsValid)
{
MessageLabel.Text = "Page submitted successfully.";
}
else
{
MessageLabel.Text = "There is an error on the page.";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Validator Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Validator Example</h3>
Enter a number from 1 to 10.
<asp:textbox id="NumberTextBox"
runat="server"/>
<asp:rangevalidator id="NumberCompareValidator"
controltovalidate="NumberTextBox"
enableclientscript="False"
type="Integer"
display="Dynamic"
errormessage="Please enter a value from 1 to 10."
maximumvalue="10"
minimumvalue="1"
text="*"
runat="server"/>
<asp:requiredfieldvalidator id="TextBoxRequiredValidator"
controltovalidate="NumberTextBox"
enableclientscript="False"
display="Dynamic"
errormessage="Please enter a value."
text="*"
runat="server"/>
<br /><br />
<asp:button id="SubmitButton"
text="Submit"
onclick="Button_Click"
runat="server"/>
<br /><br />
<asp:label id="MessageLabel"
runat="server"/>
<br /><br />
<asp:validationsummary
id="ErrorSummary"
runat="server"/>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="False" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SubmitButton.Click
If Page.IsValid Then
MessageLabel.Text = "Page submitted successfully."
Else
MessageLabel.Text = "There is an error on the page."
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Validator Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Validator Example</h3>
Enter a number from 1 to 10.
<asp:textbox id="NumberTextBox"
runat="server"/>
<asp:rangevalidator id="NumberCompareValidator"
controltovalidate="NumberTextBox"
enableclientscript="False"
type="Integer"
display="Dynamic"
errormessage="Please enter a value from 1 to 10."
maximumvalue="10"
minimumvalue="1"
text="*"
runat="server"/>
<asp:requiredfieldvalidator id="TextBoxRequiredValidator"
controltovalidate="NumberTextBox"
enableclientscript="False"
display="Dynamic"
errormessage="Please enter a value."
text="*"
runat="server"/>
<br /><br />
<asp:button id="SubmitButton"
text="Submit"
runat="server"/>
<br /><br />
<asp:label id="MessageLabel"
runat="server"/>
<br /><br />
<asp:validationsummary
id="ErrorSummary"
runat="server"/>
</form>
</body>
</html>
注解
类 BaseValidator 为所有验证控件提供核心实现。 验证控件用于验证关联的输入控件中的用户输入。 当用户输入未通过验证的值时,验证控件将显示一条错误消息。 由于验证控件与输入控件分离,因此可以将错误消息放置在页面上相对于输入控件的任意位置。 ASP.NET 提供了多个执行特定类型验证的验证控件。 下表介绍了这些控件。
验证控件 | 说明 |
---|---|
CompareValidator | 通过将 属性设置为 CompareValidator.OperatorValidationCompareOperator.DataTypeCheck,根据输入到另一个输入控件的值、常量值或正确的数据类型验证值。 |
CustomValidator | 使用用户提供的自定义验证例程验证值。 |
RangeValidator | 验证值是否在值范围内。 |
RegularExpressionValidator | 使用正则表达式验证值。 |
RequiredFieldValidator | 验证是否在必填字段中输入了值。 |
验证控件始终验证服务器上关联的输入控件。 验证控件还具有完整的客户端实现,允许启用脚本的浏览器 ((如 Microsoft Internet Explorer 版本 4.0 及更高版本) )在客户端上执行验证。 客户端验证通过在将用户输入发送到服务器之前检查用户输入来增强验证过程。 这样,就可以在提交表单之前在客户端上检测到错误,从而避免服务器端验证所需的信息的往返。
多个验证控件可以与单个输入控件一起使用,以验证不同的条件。 例如,可以对控件 TextBox 应用多个验证控件。 可以使用 RangeValidator 控件来确保在控件中 TextBox 输入的值在设置范围内,并使用 RequiredFieldValidator 控件来确保用户输入值。
ASP.NET 提供了许多能够回发到服务器的控件。 当其中一个控件的 CausesValidation
属性设置为 true
时,将在控件回发到服务器时执行验证。 以下控件能够回发到服务器:
注意
仅当 属性设置为 true
时,AutoPostBack
其中一些控件才会回发到服务器。
这些控件都有一个 ValidationGroup
属性,当设置该属性时,当控件触发回服务器的回发时,仅验证指定组中的验证控件。 若要对验证控件进行分组,请将每个验证控件的 属性设置为 ValidationGroup 相同的值。
若要将输入控件与验证控件相关联,请使用 ControlToValidate 属性。 若要指定验证失败时在验证控件中显示的文本,请使用 Text 属性。 还可以使用 控件在页面中显示所有未通过验证的控件的 ValidationSummary 摘要。 若要指定要在控件中显示的 ValidationSummary 文本,请使用 ErrorMessage 属性。
注意
如果在未设置 属性的情况下设置ErrorMessageText属性,则属性的值ErrorMessage也会显示在验证控件中。
使用验证程序控件时,应始终在执行任何处理之前检查服务器端验证的结果。 在回发之后、调用事件方法之前,页面会调用验证程序控件,并将其结果聚合到 属性中 Page.IsValid 。 (还可以使用 Validate
方法显式调用验证程序控件。) 在你自己的代码中,应在处理输入之前检查属性是否 Page.IsValid 返回 true
。 尽管如果验证检查失败,启用脚本的浏览器可能会阻止客户端上发生回发,但你还应始终在处理已验证的数据之前签 Page.IsValid 入服务器代码。
还可以手动执行验证。 若要验证页面上的所有验证控件,请使用 Page.Validate 方法。 可以使用控件的 方法验证 Validate 各个验证控件。
注意
如果在方法中使用 Page.IsValidPage_Load
属性,则必须首先显式调用 Page.Validate 方法。 由于验证发生在页的事件之后Control.Load,但在 或 Command
事件的事件处理程序Click
之前,因此在Page.IsValid调用 方法之前Page.Validate不会更新 属性。 作为替代方法,可以将代码放在 或 Command
事件的事件处理程序Click
中,Page_Load
而不是 方法。
并非所有 Web 服务器控件都支持验证控件。 可以使用验证控件验证的标准控件包括:
注意
对于要验证的输入控件, System.Web.UI.ValidationPropertyAttribute 必须将 属性应用于控件。
注意
使用派生自 BaseValidator 控件内部的 UpdatePanel 验证程序控件时,请确保验证程序控件及其关联的控件位于同一面板中。 有关使用 UpdatePanel 控件进行部分页更新的详细信息,请参阅 分页呈现概述。
验证失败时,可以通过将 属性设置为 true
来将焦点设置SetFocusOnError在关联的输入控件上。
有关 实例 BaseValidator的初始属性值的列表, BaseValidator 请参阅 构造函数。
可访问性
有关如何配置此控件以便生成符合辅助功能标准的标记的信息,请参阅 Visual Studio 中的辅助功能和 ASP.NET 和 ASP.NET 控件和辅助功能。
实施者说明
从 BaseValidator 类继承时,必须重写以下成员: EvaluateIsValid()。
构造函数
BaseValidator() |
初始化 BaseValidator 类的新实例。 |
属性
AccessKey |
获取或设置使您得以快速导航到 Web 服务器控件的访问键。 (继承自 WebControl) |
Adapter |
获取控件的浏览器特定适配器。 (继承自 Control) |
AppRelativeTemplateSourceDirectory |
获取或设置包含该控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。 (继承自 Control) |
AssociatedControlID |
不支持此属性。 |
Attributes |
获取与控件的特性不对应的任意特性(只用于呈现)的集合。 (继承自 WebControl) |
BackColor |
获取或设置 Web 服务器控件的背景色。 (继承自 WebControl) |
BindingContainer |
获取包含该控件的数据绑定的控件。 (继承自 Control) |
BorderColor |
获取或设置 Web 控件的边框颜色。 (继承自 WebControl) |
BorderStyle |
获取或设置 Web 服务器控件的边框样式。 (继承自 WebControl) |
BorderWidth |
获取或设置 Web 服务器控件的边框宽度。 (继承自 WebControl) |
ChildControlsCreated |
获取一个值,该值指示是否已创建服务器控件的子控件。 (继承自 Control) |
ClientID |
获取由 ASP.NET 生成的 HTML 标记的控件 ID。 (继承自 Control) |
ClientIDMode |
获取或设置用于生成 ClientID 属性值的算法。 (继承自 Control) |
ClientIDSeparator |
获取一个字符值,该值表示 ClientID 属性中使用的分隔符字符。 (继承自 Control) |
Context |
为当前 Web 请求获取与服务器控件关联的 HttpContext 对象。 (继承自 Control) |
Controls |
获取 ControlCollection 对象,该对象表示 UI 层次结构中的指定服务器控件的子控件。 (继承自 Control) |
ControlStyle |
获取 Web 服务器控件的样式。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
ControlStyleCreated |
获取一个值,该值指示是否已为 Style 属性创建了 ControlStyle 对象。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
ControlToValidate |
获取或设置要验证的输入控件。 |
CssClass |
获取或设置由 Web 服务器控件在客户端呈现的级联样式表 (CSS) 类。 (继承自 WebControl) |
DataItemContainer |
如果命名容器实现 IDataItemContainer,则获取对命名容器的引用。 (继承自 Control) |
DataKeysContainer |
如果命名容器实现 IDataKeysControl,则获取对命名容器的引用。 (继承自 Control) |
DesignMode |
获取一个值,该值指示是否正在使用设计图面上的一个控件。 (继承自 Control) |
Display |
获取或设置验证控件中错误消息的显示行为。 |
EnableClientScript |
获取或设置一个值,该值指示是否启用客户端验证。 |
Enabled |
获取或设置一个值,该值指示是否启用验证控件。 |
EnableTheming |
获取或设置一个值,该值指示主题是否应用于该控件。 (继承自 WebControl) |
EnableViewState |
获取或设置一个值,该值指示服务器控件是否向发出请求的客户端保持自己的视图状态以及它所包含的任何子控件的视图状态。 (继承自 Control) |
ErrorMessage |
获取或设置验证失败时 ValidationSummary 控件中显示的错误消息的文本。 |
Events |
获取控件的事件处理程序委托列表。 此属性为只读。 (继承自 Control) |
Font |
获取与 Web 服务器控件关联的字体属性。 (继承自 WebControl) |
ForeColor |
获取或设置验证失败后显示的消息的颜色。 |
HasAttributes |
获取一个值,该值指示控件是否具有特性集。 (继承自 WebControl) |
HasChildViewState |
获取一个值,该值指示当前服务器控件的子控件是否具有任何已保存的视图状态设置。 (继承自 Control) |
Height |
获取或设置 Web 服务器控件的高度。 (继承自 WebControl) |
ID |
获取或设置分配给服务器控件的编程标识符。 (继承自 Control) |
IdSeparator |
获取用于分隔控件标识符的字符。 (继承自 Control) |
IsChildControlStateCleared |
获取一个值,该值指示该控件中包含的控件是否具有控件状态。 (继承自 Control) |
IsEnabled |
获取一个值,该值指示是否启用控件。 (继承自 WebControl) |
IsTrackingViewState |
获取一个值,用于指示服务器控件是否会将更改保存到其视图状态中。 (继承自 Control) |
IsUnobtrusive |
获取一个值,该值指示控件是否生成非介入式 JavaScript。 |
IsValid |
获取或设置一个值,该值指示关联的输入控件是否通过验证。 |
IsViewStateEnabled |
获取一个值,该值指示是否为该控件启用了视图状态。 (继承自 Control) |
LoadViewStateByID |
获取一个值,该值指示控件是否通过 ID 而不是索引参与加载其视图状态。 (继承自 Control) |
NamingContainer |
获取对服务器控件的命名容器的引用,此引用创建唯一的命名空间,以区分具有相同 ID 属性值的服务器控件。 (继承自 Control) |
Page |
获取对包含服务器控件的 Page 实例的引用。 (继承自 Control) |
Parent |
获取对页 UI 层次结构中服务器控件的父控件的引用。 (继承自 Control) |
PropertiesValid |
获取一个值,该值指示由 ControlToValidate 属性指定的控件是否是有效的控件。 |
RenderingCompatibility |
获取一个值,该值指定呈现的 HTML 将与之兼容的 ASP.NET 版本。 (继承自 Control) |
RenderUplevel |
获取一个值,该值指示客户端的浏览器是否支持“上一级”呈现。 |
SetFocusOnError |
获取或设置一个值,该值指示在验证失败时是否将焦点设置到 ControlToValidate 属性指定的控件上。 |
Site |
获取容器信息,该容器在呈现于设计图面上时承载当前控件。 (继承自 Control) |
SkinID |
获取或设置要应用于控件的外观。 (继承自 WebControl) |
Style |
获取将在 Web 服务器控件的外部标记上呈现为样式特性的文本特性的集合。 (继承自 WebControl) |
SupportsDisabledAttribute |
获取一个值,该值指示在控件的 |
TabIndex |
获取或设置 Web 服务器控件的选项卡索引。 (继承自 WebControl) |
TagKey |
获取用于呈现 Label 控件的 HTML 标记。 (继承自 Label) |
TagName |
获取控件标记的名称。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
TemplateControl |
获取或设置对包含该控件的模板的引用。 (继承自 Control) |
TemplateSourceDirectory |
获取包含当前服务器控件的 Page 或 UserControl 的虚拟目录。 (继承自 Control) |
Text |
获取或设置验证失败时验证控件中显示的文本。 |
Text |
获取或设置 Label 控件的文本内容。 (继承自 Label) |
ToolTip |
获取或设置当鼠标指针悬停在 Web 服务器控件上时显示的文本。 (继承自 WebControl) |
UniqueID |
获取服务器控件的唯一的、以分层形式限定的标识符。 (继承自 Control) |
ValidateRequestMode |
获取或设置指示控件是否检查来自浏览器的客户端输入是否具有潜在危险值的值。 (继承自 Control) |
ValidationGroup |
获取或设置此验证控件所属的验证组的名称。 |
ViewState |
获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。 (继承自 Control) |
ViewStateIgnoresCase |
获取一个值,该值指示 StateBag 对象是否不区分大小写。 (继承自 Control) |
ViewStateMode |
获取或设置此控件的视图状态模式。 (继承自 Control) |
Visible |
获取或设置一个值,该值指示服务器控件是否作为 UI 呈现在页上。 (继承自 Control) |
Width |
获取或设置 Web 服务器控件的宽度。 (继承自 WebControl) |
方法
事件
DataBinding |
当服务器控件绑定到数据源时发生。 (继承自 Control) |
Disposed |
当从内存释放服务器控件时发生,这是请求 ASP.NET 页时服务器控件生存期的最后阶段。 (继承自 Control) |
Init |
当服务器控件初始化时发生;初始化是控件生存期的第一步。 (继承自 Control) |
Load |
当服务器控件加载到 Page 对象中时发生。 (继承自 Control) |
PreRender |
在加载 Control 对象之后、呈现之前发生。 (继承自 Control) |
Unload |
当服务器控件从内存中卸载时发生。 (继承自 Control) |
显式接口实现
扩展方法
FindDataSourceControl(Control) |
返回与指定控件的数据控件关联的数据源。 |
FindFieldTemplate(Control, String) |
返回指定控件的命名容器中指定列的字段模板。 |
FindMetaTable(Control) |
返回包含数据控件的元表对象。 |