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.Operator 屬性設定為 ValidationCompareOperator.DataTypeCheck,以驗證輸入至另一個輸入控件的值、針對常數值,或針對適當的數據類型驗證值。 |
CustomValidator | 使用使用者提供的自定義驗證例程來驗證值。 |
RangeValidator | 驗證值是否在值範圍內。 |
RegularExpressionValidator | 使用正則表達式驗證值。 |
RequiredFieldValidator | 驗證值是否已在必要欄位中輸入。 |
驗證控件一律會驗證伺服器上的相關聯輸入控制件。 驗證控件也有完整的用戶端實作,可讓啟用腳本的瀏覽器(例如Microsoft Internet Explorer 4.0 版和更新版本)在用戶端上執行驗證。 客戶端驗證會先檢查使用者輸入,再傳送至伺服器,藉以增強驗證程式。 這可讓用戶端在提交表單之前偵測到錯誤,避免伺服器端驗證所需的資訊來回行程。
多個驗證控制項可以搭配個別輸入控件使用,以驗證不同的準則。 例如,您可以在 TextBox 控制件上套用多個驗證控制件。 您可以使用 RangeValidator 控件來確保 TextBox 控件中輸入的值在設定範圍內,以及 RequiredFieldValidator 控件,以確保使用者輸入值。
ASP.NET 提供許多控制件,能夠回傳至伺服器。 當其中一個控件的 CausesValidation
屬性設定為 true
時,當控件回傳至伺服器時,就會執行驗證。 下列控制項能夠回傳至伺服器:
注意
只有在將 AutoPostBack
屬性設定為 true
時,這些控件的其中一些控件才會回傳回伺服器。
這些控制項各有一個 ValidationGroup
屬性,當設定時,當控件觸發回傳至伺服器時,只會驗證指定群組內的驗證控制件。 若要將驗證控件分組,請將每個驗證控件的 ValidationGroup 屬性設定為相同的值。
若要將輸入控件與驗證控件產生關聯,請使用 ControlToValidate 屬性。 若要指定驗證失敗時要顯示在驗證控件中的文字,請使用 Text 屬性。 您也可以使用 ValidationSummary 控件來顯示頁面中驗證失敗的所有控制項摘要。 若要指定要顯示在 ValidationSummary 控件中的文字,請使用 ErrorMessage 屬性。
注意
如果您未設定 Text 屬性來設定 ErrorMessage 屬性,ErrorMessage 屬性的值也會顯示在驗證控件中。
使用驗證程式控制項時,您應該一律先檢查伺服器端驗證的結果,再執行任何處理。 在回傳之後,但在呼叫事件方法之前,頁面會呼叫驗證程式控件,並將其結果匯總至 Page.IsValid 屬性。 (您也可以使用 Validate
方法明確呼叫驗證程式控制件。在您自己的程式代碼中,您應該先檢查 Page.IsValid 屬性是否傳回 true
,再處理輸入。 即使啟用文稿的瀏覽器可能會在驗證檢查失敗時,防止客戶端發生回傳,您也應該在處理已驗證的數據之前,先檢查伺服器程式代碼中的 Page.IsValid。
您也可以手動執行驗證。 若要驗證頁面上的所有驗證控件,請使用 Page.Validate 方法。 您可以使用控制項的 Validate 方法來驗證個別的驗證控制件。
注意
如果您在 Page_Load
方法中使用 Page.IsValid 屬性,您必須先明確呼叫 Page.Validate 方法。 由於驗證會在頁面的 Control.Load 事件之後發生,但在呼叫 Click
Page.ValidateCommand
方法之前,Page.IsValid 屬性才會更新。 或者,您可以將程式代碼放在 Click
或 Command
事件的事件處理程式中,而不是 Page_Load
方法。
並非所有網頁伺服器控制件都支持驗證控制件。 可以使用驗證控制項驗證的標準控制項如下:
注意
若要驗證輸入控件,System.Web.UI.ValidationPropertyAttribute 屬性必須套用至控件。
注意
當您在 UpdatePanel 控件內使用衍生自 BaseValidator 的驗證程式控制項時,請確定驗證程式控制件及其相關聯的控制項位於相同的面板中。 如需使用 UpdatePanel 控件進行部分頁面更新的詳細資訊,請參閱 Partial-Page 轉譯概觀。
驗證失敗時,您可以將 SetFocusOnError 屬性設定為 true
,將焦點設定為相關聯的輸入控件。
如需實例 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 標記控件識別碼。 (繼承來源 Control) |
ClientIDMode |
取得或設定用來產生 ClientID 屬性值的演算法。 (繼承來源 Control) |
ClientIDSeparator |
取得字元值,表示 ClientID 屬性中使用的分隔符。 (繼承來源 Control) |
Context |
取得與目前 Web 要求之伺服器控制項相關聯的 HttpContext 物件。 (繼承來源 Control) |
Controls |
取得 ControlCollection 物件,代表UI階層中指定之伺服器控件的子控件。 (繼承來源 Control) |
ControlStyle |
取得 Web 伺服器控制件的樣式。 此屬性主要是由控件開發人員使用。 (繼承來源 WebControl) |
ControlStyleCreated |
取得值,指出是否已為 ControlStyle 屬性建立 Style 物件。 此屬性主要供控件開發人員使用。 (繼承來源 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 |
取得與網頁伺服器控件相關聯的字型屬性。 (繼承來源 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 |
取得頁面控件階層中伺服器控制件之父控件的參考。 (繼承來源 Control) |
PropertiesValid |
取得值,這個值表示 ControlToValidate 屬性指定的控件是否為有效的控件。 |
RenderingCompatibility |
取得值,指定轉譯 HTML 與 的 ASP.NET 版本相容。 (繼承來源 Control) |
RenderUplevel |
取得值,這個值表示客戶端的瀏覽器是否支援「上層」轉譯。 |
SetFocusOnError |
取得或設定值,這個值表示驗證失敗時,焦點是否設定為 ControlToValidate 屬性所指定的控件。 |
Site |
取得在設計介面上呈現時裝載目前控制件之容器的相關信息。 (繼承來源 Control) |
SkinID |
取得或設定要套用至控件的面板。 (繼承來源 WebControl) |
Style |
取得文字屬性的集合,這些屬性將會轉譯為 Web 伺服器控件外部標記上的樣式屬性。 (繼承來源 WebControl) |
SupportsDisabledAttribute |
取得值,這個值表示當控件的 IsEnabled 屬性 |
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) |
傳回包含數據控制件的中繼資料表物件。 |