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
}
谁能告诉我,为什么这不起作用?
注意到:
答案 0 :(得分:1)
溶液:
protected override void OnLoad(System.EventArgs e)
{
base.OnLoad(e);
this.EnsureChildControls();
}
为什么?
因为我没有设置validationGroup
,所以this.EnsureChildControls()
将不会被调用,除非我在OnLoad