代码之家  ›  专栏  ›  技术社区  ›  Andreas Niedermair

为什么这个CustomValidator没有启动?

  •  0
  • Andreas Niedermair  · 技术社区  · 15 年前
    public sealed class IntegerBox : TextBox
    {
        #region constants
    
        private const string RangeConstraintValidatorID = "rangeConstraintValidator";
    
        #endregion
    
        #region child controls
    
        private readonly CustomValidator _rangeConstraintValidator = new CustomValidator
        {
            EnableClientScript = false,
            Enabled = true,
            ErrorMessage = "ErrorMessageForRangeConstraintFailed",
            Display = ValidatorDisplay.None,
            SetFocusOnError = true,
            ValidateEmptyText = true
        };
    
        #endregion
    
        #region life cycle
    
        protected override void CreateChildControls()
        {
            this.Controls.Clear();
    
            this._rangeConstraintValidator.ID = this.ClientID + this.ClientIDSeparator + RangeConstraintValidatorID;
            this._rangeConstraintValidator.ServerValidate += this.ValidateRangeConstraint;
    
            this.Controls.Add(this._rangeConstraintValidator);
    
            base.CreateChildControls();
        }
    
        #endregion
    
        /// <summary>
        /// Gets or sets the number.
        /// </summary>
        /// <value>The number.</value>
        public int? Number
        {
            get
            {
                /* MAGIC */
            }
            set
            {
                /* MAGIC */
            }
        }
    
        public override string ValidationGroup
        {
            get
            {
                this.EnsureChildControls();
                return base.ValidationGroup;
            }
            set
            {
                this.EnsureChildControls();
                base.ValidationGroup = value;
                this._rangeConstraintValidator.ValidationGroup = value;
            }
        }
    
        public int? MaximumValue { get; set; }
        public int? MinimumValue { get; set; }
        public string ErrorMessageForRangeConstraintFailed
        {
            get
            {
                this.EnsureChildControls();
                return this._rangeConstraintValidator.ErrorMessage;
            }
            set
            {
                this.EnsureChildControls();
                this._rangeConstraintValidator.ErrorMessage = value;
            }
        }
    
        public void ValidateRangeConstraint(object source, ServerValidateEventArgs args)
        {
            /* MAGIC */
        }
    
        #endregion
    }
    

    谁能告诉我,为什么这不起作用?
    笔记:

    • 我已经尝试在CreateChildControls内实例化rangeConstraint验证器=无效!
    • 验证方法没有被破坏
    1 回复  |  直到 9 年前
        1
  •  1
  •   user57508 user57508    15 年前

    解决方案:

    protected override void OnLoad(System.EventArgs e)
    {
        base.OnLoad(e);
        this.EnsureChildControls();
    }
    


    因为我没有设定 validationGroup , this.EnsureChildControls() 除非我打电话给你,否则我不会打电话给你 OnLoad