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 控件中輸入有效的值。
Important
此範例中有一個文字框可接受使用者輸入,這可能構成安全威脅。 預設情況下,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 提供數個執行特定驗證類型的驗證控制件。 下表描述這些控制件。
| 驗證控制件 | Description |
|---|---|
| CompareValidator | 藉由將 CompareValidator.Operator 屬性設定為 ValidationCompareOperator.DataTypeCheck,以驗證輸入至另一個輸入控件的值、針對常數值,或針對適當的數據類型驗證值。 |
| CustomValidator | 使用使用者提供的自定義驗證例程來驗證值。 |
| RangeValidator | 驗證值是否在值範圍內。 |
| RegularExpressionValidator | 使用正則表達式驗證值。 |
| RequiredFieldValidator | 驗證值是否已在必要欄位中輸入。 |
驗證控件一律會驗證伺服器上的相關聯輸入控制件。 驗證控件也有完整的用戶端實作,可讓啟用腳本的瀏覽器(例如Microsoft Internet Explorer 4.0 版和更新版本)在用戶端上執行驗證。 用戶端驗證透過在傳送至伺服器前檢查使用者輸入,強化驗證流程。 這可讓用戶端在提交表單之前偵測到錯誤,避免伺服器端驗證所需的資訊來回行程。
多個驗證控制可搭配單一輸入控制來驗證不同標準。 例如,您可以在 TextBox 控制件上套用多個驗證控制件。 您可以使用 RangeValidator 控件來確保 TextBox 控件中輸入的值在設定範圍內,以及 RequiredFieldValidator 控件,以確保使用者輸入值。
ASP.NET 提供許多控制功能,能夠回傳到伺服器。 當其中一個控件的 CausesValidation 屬性設定為 true時,當控件回傳至伺服器時,就會執行驗證。 以下控制項可回傳至伺服器:
Note
有些控制項只有在屬性 AutoPostBack 設定為 true時才會回傳到伺服器。
這些控制項各自有一個 ValidationGroup 屬性,當設定時,當控制觸發回傳伺服器的貼文時,只會驗證指定群組內的驗證控制項。 若要將驗證控件分組,請將每個驗證控件的 ValidationGroup 屬性設定為相同的值。
若要將輸入控件與驗證控件產生關聯,請使用 ControlToValidate 屬性。 若要指定驗證失敗時要顯示在驗證控件中的文字,請使用 Text 屬性。 你也可以在 ValidationSummary 頁面中用控制項顯示所有驗證失敗的控制項摘要。 要指定要在控制項中ValidationSummary顯示的文字,請使用屬性。ErrorMessage
Note
如果你設定 ErrorMessage 了屬性但沒有設定屬性 Text ,屬性的 ErrorMessage 值也會顯示在驗證控制項中。
使用驗證器控制時,應在執行任何處理前先檢查伺服器端驗證結果。 在回貼後但事件方法被呼叫之前,頁面會呼叫驗證者控制項,並將結果彙整到屬性中 Page.IsValid 。 (你也可以用這個 Validate 方法明確呼叫驗證者控制項。)在你自己的程式碼中,你應該先檢查屬性是否 Page.IsValid 會回傳 true ,才能處理輸入。 即使啟用腳本的瀏覽器可能阻止客戶端在驗證檢查失敗時回傳,但你也應該在處理驗證資料前檢查 Page.IsValid 伺服器程式碼。
您也可以手動執行驗證。 若要驗證頁面上的所有驗證控件,請使用 Page.Validate 方法。 您可以使用控制項的 Validate 方法來驗證個別的驗證控制件。
Note
如果您在 Page.IsValid 方法中使用 Page_Load 屬性,您必須先明確呼叫 Page.Validate 方法。 由於驗證會在頁面的 Control.Load 事件之後發生,但在呼叫 ClickCommandPage.IsValid 方法之前,Page.Validate 屬性才會更新。 或者,您可以將程式代碼放在 Click 或 Command 事件的事件處理程式中,而不是 Page_Load 方法。
並非所有網頁伺服器控制件都支持驗證控制件。 可以使用驗證控制項驗證的標準控制項如下:
Note
若要驗證輸入控件,System.Web.UI.ValidationPropertyAttribute 屬性必須套用至控件。
Note
當您在 BaseValidator 控件內使用衍生自 UpdatePanel 的驗證程式控制項時,請確定驗證程式控制件及其相關聯的控制項位於相同的面板中。 欲了解更多關於部分頁面更新控制項 UpdatePanel 的資訊,請參閱 Partial-Page 渲染概述。
驗證失敗時,您可以將 SetFocusOnError 屬性設定為 true,將焦點設定為相關聯的輸入控件。
如需 實例 BaseValidator的初始屬性值清單,請參閱 建構函式 BaseValidator 。
Accessibility
關於如何配置此控制項以產生符合無障礙標準的標記,請參閱 Visual Studio 中的無障礙,ASP.NETASP.NET 控制項與無障礙。
給實施者的注意事項
當你從 BaseValidator 該類別繼承時,必須覆寫以下成員: EvaluateIsValid()。
建構函式
| 名稱 | Description |
|---|---|
| BaseValidator() |
初始化 BaseValidator 類別的新執行個體。 |
屬性
| 名稱 | Description |
|---|---|
| AccessKey |
取得或設定存取金鑰,讓你能快速導航到網頁伺服器控制。 (繼承來源 WebControl) |
| Adapter |
拿到瀏覽器專用的控制器轉接器。 (繼承來源 Control) |
| AppRelativeTemplateSourceDirectory |
取得或設定包含此控制項的 or Page 物件的UserControl應用程式相對虛擬目錄。 (繼承來源 Control) |
| AssociatedControlID |
不支援這個屬性。 |
| Attributes |
取得一組任意屬性(僅用於渲染),這些屬性與控制項上的屬性不對應。 (繼承來源 WebControl) |
| BackColor |
取得或設定網頁伺服器控制項的背景色。 (繼承來源 WebControl) |
| BindingContainer |
取得包含該控制項資料綁定的控制項。 (繼承來源 Control) |
| BorderColor |
取得或設定網頁控制的邊框顏色。 (繼承來源 WebControl) |
| BorderStyle |
取得或設定網頁伺服器控制的邊界樣式。 (繼承來源 WebControl) |
| BorderWidth |
取得或設定網頁伺服器控制的邊界寬度。 (繼承來源 WebControl) |
| ChildControlsCreated |
會取得一個值,表示伺服器控制項的子控制項是否已被建立。 (繼承來源 Control) |
| ClientID |
取得由 ASP.NET 產生的 HTML 標記的控制 ID。 (繼承來源 Control) |
| ClientIDMode |
取得或設定用於產生屬性值 ClientID 的演算法。 (繼承來源 Control) |
| ClientIDSeparator |
會得到一個字元值,代表該屬性中使用 ClientID 的分隔符字元。 (繼承來源 Control) |
| Context |
取得 HttpContext 與伺服器控制項相關聯的物件,用於目前的網頁請求。 (繼承來源 Control) |
| Controls |
取得 ControlCollection 一個物件,代表 UI 階層中指定伺服器控制項的子控制項。 (繼承來源 Control) |
| ControlStyle |
這就有網頁伺服器控制的風格。 此特性主要由對照顯影劑使用。 (繼承來源 WebControl) |
| ControlStyleCreated |
會取得一個值,表示該屬性是否 Style 已建立 ControlStyle 物件。 此特性主要由控制顯影劑使用。 (繼承來源 WebControl) |
| ControlToValidate |
取得或設定輸入控制來驗證。 |
| CssClass |
取得或設定由網頁伺服器控制項在用戶端渲染的層疊樣式表(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 |
取得或設定網頁伺服器控制的高度。 (繼承來源 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 |
會取得一個值,指示當控制項 |
| TabIndex |
取得或設定網頁伺服器控制的分頁索引。 (繼承來源 WebControl) |
| TagKey |
取得用來渲染 Label 控制項的 HTML 標籤。 (繼承來源 Label) |
| TagName |
取得控制標籤名稱。 此特性主要由對照顯影劑使用。 (繼承來源 WebControl) |
| TemplateControl |
取得或設定包含此控制項的範本參考。 (繼承來源 Control) |
| TemplateSourceDirectory |
取得包含當前伺服器控制權的 or Page 虛擬目錄UserControl。 (繼承來源 Control) |
| Text |
當驗證失敗時,取得或設定驗證控制中顯示的文字。 |
| Text |
取得或設定控制項的 Label 文字內容。 (繼承來源 Label) |
| ToolTip |
當滑鼠指標懸停在網頁伺服器控制項上時,會取得或設定顯示的文字。 (繼承來源 WebControl) |
| UniqueID |
取得伺服器控制的唯一、階層限定的識別碼。 (繼承來源 Control) |
| ValidateRequestMode |
取得或設定一個值,指示控制器是否檢查瀏覽器的客戶端輸入是否有潛在危險的值。 (繼承來源 Control) |
| ValidationGroup |
取得或設定該驗證控制所屬的驗證群組名稱。 |
| ViewState |
取得狀態資訊字典,讓你能儲存並還原伺服器控制的多個請求,針對同一頁面。 (繼承來源 Control) |
| ViewStateIgnoresCase |
會得到一個值,表示該物件是否 StateBag 不區分大小寫。 (繼承來源 Control) |
| ViewStateMode |
取得或設定此控制的視圖狀態模式。 (繼承來源 Control) |
| Visible |
取得或設定一個值,指示伺服器控制項是否以 UI 形式呈現在頁面上。 (繼承來源 Control) |
| Width |
取得或設定網頁伺服器控制的寬度。 (繼承來源 WebControl) |
方法
事件
| 名稱 | Description |
|---|---|
| DataBinding |
當伺服器控制項綁定到資料來源時會發生。 (繼承來源 Control) |
| Disposed |
當伺服器控制從記憶體中釋放時發生,這是伺服器控制生命週期中請求 ASP.NET 頁面的最後階段。 (繼承來源 Control) |
| Init |
發生在伺服器控制初始化時,這是其生命週期的第一步。 (繼承來源 Control) |
| Load |
當伺服器控制項載入 Page 物件時會發生。 (繼承來源 Control) |
| PreRender |
發生在物件載入後 Control 但渲染之前。 (繼承來源 Control) |
| Unload |
當伺服器控制項從記憶體卸載時發生。 (繼承來源 Control) |
明確介面實作
擴充方法
| 名稱 | Description |
|---|---|
| FindDataSourceControl(Control) |
回傳與指定控制項相關聯的資料來源。 |
| FindFieldTemplate(Control, String) |
回傳指定控制項命名容器中指定欄位的欄位範本。 |
| FindMetaTable(Control) |
回傳包含資料控制項的元值物件。 |