Partager via


Contrôle validateur de champ obligatoire, exemple

Le contrôle validateur de champ obligatoire décrit ici étend le contrôle validateur de base présenté dans l'exemple de contrôle validateur de base. Ce validateur ajoute les fonctionnalités suivantes à la classe de base :

  • Il expose une propriété nommée InitialValue qui permet au développeur de pages de définir une valeur initiale pour le champ obligatoire.
  • Il substitue la méthode EvaluateIsValid (définie en tant que méthode abstraite dans BaseDomValidator ) pour fournir une logique permettant de déterminer si la valeur du champ obligatoire est modifiée lorsque l'utilisateur change de champ.
  • Il substitue AddAttributesToRender (hérité de WebControl) pour fournir un gestionnaire côté client pour la logique d'évaluation. Le gestionnaire côté client est une fonction définie dans la bibliothèque de scripts.

Pour compiler et générer cet exemple, consultez les instructions fournies dans Exemples de contrôle validateur. Pour une vue d'ensemble de l'écriture de scripts côté client dans les contrôles serveur, consultez Fonctionnalités côté client dans un contrôle serveur.

// 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

Voir aussi

Exemples de contrôle validateur | Contrôle validateur de base, exemple | Contrôle validateur d'expression régulière, exemple | Bibliothèque de scripts pour validateur, exemple | Fichier de configuration pour l'exemple de validateur | Page de test pour l'exemple de validateur | Développement d'un contrôle validateur