Question

Bonjour, je suis en train d'étendre le requirefieldvalidator de prendre une nouvelle RegularExpressions de propriété et valident également. Je sais que je peux utiliser le contrôle RegularExpression mais alors je besoin de 2 contrôles donc je veux éliminer si je ne dispose que d'utiliser deux commandes. Il y a également d'autres fonctionnalités que je veux faire ce qui me inclure l'étendre.

Mon problème est que je ne sais pas quoi remplacer - j'ai essayé la validation () mais je reçois « ne peut pas passer outre membre hérité « System.Web.UI.WebControls.BaseValidator.Validate () » parce qu'il est pas marqué virtuel , abstrait, ou override » et je comprends le EvaluateIsValid () est pour valider le contrôle pas ce qui est dans le contrôle.

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;

namespace ClassLibrary
{
    public class RequiredFieldValidatorExtended : RequiredFieldValidator
    {
        public RequiredFieldValidatorExtended()
        {

        }

        private string _regEx;
        public string RegEx
        {
            get
            {
                return _regEx;
            }
            set
            {
                _regEx = this.RegEx;
            }
        }

        protected override bool EvaluateIsValid()
        {
            TextBox textBox = (TextBox)Page.Form.FindControl(ControlToValidate);
            if (textBox.Text != null && textBox.Text.Length > 0)
            {
                if (this._regEx != null && _regEx.Length > 0)
                {
                    if (Regex.IsMatch(textBox.Text, _regEx))
                        IsValid = true;
                    else
                        IsValid = false;
                }
                IsValid = true;
            }
            else
                IsValid = false;

            base.Validate();
            return IsValid;
        }
    }
}
Était-ce utile?

La solution

Je pense que vous devriez utiliser à la place CustomValidator ou dériver de classe abstraite BaseValidator

http://msdn.microsoft.com /en-us/library/aa720677(v=vs.71).aspx

Autres conseils

Vous devez remplacer la méthode EvaluateIsValid(). BaseValidator.Validate() utilisations virtual EvaluateIsValid interne . Par exemple:.

protected override bool EvaluateIsValid()
{
    bool isValid = base.EvaluateIsValid();
    if (isValid)
    {
        string controlToValidate = this.ControlToValidate;
        string controlValue = GetControlValidationValue(controlToValidate);
        if (!string.IsNullOrWhiteSpace(controlValue))
        {
            if (this._regEx != null && _regEx.Length > 0)
            {
                if (Regex.IsMatch(controlValue, _regEx))
                    isValid = true;
            }
        }
    }


    return isValid;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top