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 }
谁能告诉我,为什么这不起作用? 笔记:
解决方案:
protected override void OnLoad(System.EventArgs e) { base.OnLoad(e); this.EnsureChildControls(); }
因为我没有设定 validationGroup , this.EnsureChildControls() 除非我打电话给你,否则我不会打电话给你 OnLoad
validationGroup
this.EnsureChildControls()
OnLoad