共用方式為


必要欄位驗證器控制項範例

此處說明的必要欄位驗證器控制項可以擴充基底驗證器控制項範例中所述的基底驗證器控制項。這個驗證器會將下列的功能加入基底類別。

  • 它會公開名為 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

請參閱

驗證器控制項範例 | 基底驗證器控制項範例 | 規則運算式驗證器控制項範例 | 驗證器的指令碼程式庫範例 | 驗證器組態檔範例 | 驗證器測試網頁範例 | 開發驗證器控制項