質問

こんにちは、requirefieldvalidatorを拡張して新しいプロパティを取得し、Regularexpressionsも検証しようとしています。 Regularexpressionコントロールを使用できることはわかっていますが、2つのコントロールが必要なので、2つのコントロールを使用するだけで、2つのコントロールを削除したいと思います。また、私がそれを拡張することを含む私が作りたい他の機能もあります。

私の問題は、私が何をオーバーライドすべきかわからないことです - 私はvalidate()を試しましたが、「継承されたメンバー 'system.web.ui.webcontrols.basevalidator.validate()」を「オーバーライドすることはできません。または「オーバーライド」と私は、evaluateisvalid()がコントロールにあるものではなく、コントロールを検証するためのものであることを理解しています。

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;
        }
    }
}
役に立ちましたか?

解決

代わりにCustomValidatorを使用するか、BaseValidator Abstractクラスから派生する必要があると思います

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

他のヒント

オーバーライドする必要があります EvaluateIsValid() 方法。 BaseValidator.Validate() メソッドの使用 virtual EvaluateIsValid 初めの。例えば:

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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top