必要欄位驗證器控制項範例
此處說明的必要欄位驗證器控制項可以擴充基底驗證器控制項範例中所述的基底驗證器控制項。這個驗證器會將下列的功能加入基底類別。
- 它會公開名為
InitialValue
的屬性以允許網頁開發人員設定必要欄位的初始值。 - 它會覆寫
EvaluateIsValid
方法 (定義為BaseDomValidator
中的抽象方法) 以提供邏輯來決定當使用者移至另一個欄位時是否要變更必要欄位的值。 - 它會覆寫 AddAttributesToRender (繼承自 WebControl) 以提供評估邏輯的用戶端處理常式。用戶端處理常式是定義於指令碼程式庫中的函式。
若要編譯和建置這個範例,請參閱驗證器控制項範例中的說明。如需伺服器控制項的用戶端指令碼概觀,請參閱伺服器控制項中的用戶端功能。
// RequiredDomValidator.cs.
namespace DomValidators {
using System.ComponentModel;
using System.Diagnostics;
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
[
ToolboxData("<{0}:RequiredDomValidator runat=server ErrorMessage=\"RequiredDomValidator\"></{0}:RequiredDomValidator>")
]
public class RequiredDomValidator : BaseDomValidator {
[
Bindable(true),
Category("Behavior"),
DefaultValue(""),
Description("Initial Value")
]
public string InitialValue {
get {
object o = ViewState["InitialValue"];
return((o == null) ? String.Empty : (string)o);
}
set {
ViewState["InitialValue"] = value;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer) {
base.AddAttributesToRender(writer);
if (RenderUplevel) {
writer.AddAttribute("evaluationfunction", "RequiredFieldValidatorEvaluateIsValid");
writer.AddAttribute("initialvalue", InitialValue);
}
}
protected override bool EvaluateIsValid() {
// Get the control value; return true if it is not found.
string controlValue = GetControlValidationValue(ControlToValidate);
if (controlValue == null) {
Debug.Fail("Should have been caught by PropertiesValid check.");
return true;
}
// See if the control has changed.
return(!controlValue.Trim().Equals(InitialValue.Trim()));
}
}
}
[Visual Basic]
' RequiredDomValidator.vb
Option Explicit
Option Strict
Imports System.ComponentModel
Imports System.Diagnostics
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Namespace DomValidators
<ToolboxData("<{0}:RequiredDomValidator runat=server ErrorMessage=""RequiredDomValidator""></{0}:RequiredDomValidator>")> _
Public Class RequiredDomValidator
Inherits BaseDomValidator
<Bindable(True), _
Category("Behavior"), _
DefaultValue(""), _
Description("Initial Value")> _
Public Property InitialValue() As String
Get
Dim o As Object = ViewState("InitialValue")
If o Is Nothing Then
Return String.Empty
Else
Return CStr(o)
End If
End Get
Set
ViewState("InitialValue") = value
End Set
End Property
Protected Overrides Sub AddAttributesToRender(writer As HtmlTextWriter)
MyBase.AddAttributesToRender(writer)
If MyBase.RenderUplevel Then
writer.AddAttribute("evaluationfunction", "RequiredFieldValidatorEvaluateIsValid")
writer.AddAttribute("initialvalue", InitialValue)
End If
End Sub
Protected Overrides Function EvaluateIsValid() As Boolean
' Get the control value; return true if it is not found.
Dim controlValue As String = GetControlValidationValue(MyBase.ControlToValidate)
If controlValue Is Nothing Then
Debug.Fail("Should have been caught by PropertiesValid check.")
Return True
End If
' See if the control has changed.
Return Not controlValue.Trim().Equals(InitialValue.Trim())
End Function
End Class
End Namespace
請參閱
驗證器控制項範例 | 基底驗證器控制項範例 | 規則運算式驗證器控制項範例 | 驗證器的指令碼程式庫範例 | 驗證器組態檔範例 | 驗證器測試網頁範例 | 開發驗證器控制項