Как создать составной элемент управления с валидатором диапазона в asp.net
Я хочу создать составной пользовательский элемент управления с проверкой диапазона. это может быть целое число или дата. Невозможно назначить MinimumValue и MaximumValue в качестве свойств. Может кто-нибудь мне помочь. Мой код может быть неправильным, но, пожалуйста, предложите мне решение: - Я пытаюсь создать составной текстовый элемент управления с проверкой диапазона. для этого я объявил три свойства Bool IsRangeNum, Int MininumValue и int MaximumValue. - Если IsRangeNum имеет значение "True", MinimumValue и MaximumValue назначаются целое число, введенное в текстовое поле, должно быть проверено. - Невозможно получить значение свойства MinimumValue и MaximumValue со страницы.aspx - 'int number = Convert.ToInt32(textBox1.Text);' значение текстового поля конвертируется в int.
[ToolboxData("<{0}:ValidationTextBox runat=server></{0}:ValidationTextBox>")]
public class ValidationTextBox : CompositeControl
{
#region-- privatess --
private TextBox textBox1;
private RangeValidator RangeValidator1;
private bool isRange;
private int minimumValue;
private int maximumValue;
#endregion
#region-- textbox --
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
[Description("Text displayed on the textbox")]
public string Value
{
get
{
EnsureChildControls();
return textBox1.Text;
}
set
{
EnsureChildControls();
textBox1.Text = value;
}
}
#region -- range validation --
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
[Description("Error message that appears when value in textbox is out of range ")]
public String InvaildRangeErrorMessage
{
get
{
EnsureChildControls();
return string.IsNullOrEmpty(RangeValidator1.ErrorMessage) ? "Invalid value" : RangeValidator1.ErrorMessage;
}
set
{
EnsureChildControls();
RangeValidator1.ErrorMessage = value;
}
}
[Bindable(true)]
[Category("Default")]
[DefaultValue("")]
[Localizable(true)]
[Description("Range Validation. Leave blank if you dont want to implement.")]
public bool IsRangeNum
{
get
{
EnsureChildControls();
return RangeValidator1.Enabled;
}
set
{
EnsureChildControls();
RangeValidator1.Enabled = true;
if (value == true)
{
int number = Convert.ToInt32(textBox1.Text);
RangeValidator1.Enabled = true;
if (number >= MinimumValue && number <= MaximumValue)
{
RangeValidator1.Enabled = true;
}
else
{
RangeValidator1.Enabled = false;
}
}
else
{
RangeValidator1.Enabled = false;
}
}
}
[Bindable(true)]
[Category("Default")]
[DefaultValue("")]
[Localizable(true)]
[Description("Range Validation. Leave blank if you dont want to implement.")]
public int MinimumValue
{
get
{
EnsureChildControls();
return minimumValue;
}
set
{
EnsureChildControls();
minimumValue = value;
RangeValidator1.Enabled = true;
}
}
[Bindable(true)]
[Category("Default")]
[DefaultValue("")]
[Localizable(true)]
[Description("Range Validation. Leave blank if you dont want to implement.")]
public int MaximumValue
{
get
{
EnsureChildControls();
return maximumValue;
}
set
{
EnsureChildControls();
maximumValue = value;
RangeValidator1.Enabled = true;
}
}
#endregion
protected override void CreateChildControls()
{
Controls.Clear();
#region--textbox--
textBox1 = new TextBox();
textBox1.ID = "textbox1";
textBox1.Style[HtmlTextWriterStyle.VerticalAlign] = "middle";
#endregion
#region-- range validator--
RangeValidator1 = new RangeValidator();
RangeValidator1.ID = "validator8";
RangeValidator1.Enabled = false;
RangeValidator1.ErrorMessage = RegularExpressionErrorMessage;
RangeValidator1.CssClass = validationClasses;
RangeValidator1.Display = ValidatorDisplay.Dynamic;
RangeValidator1.ControlToValidate = textBox1.ID;
RangeValidator1.SetFocusOnError = true;
#endregion
this.Controls.Add(textBox1);
this.Controls.Add(RangeValidator1);
}
protected override void OnLoad(EventArgs e)
{
EnsureChildControls();
base.OnLoad(e);
}
protected override void Render(HtmlTextWriter writer)
{
AddAttributesToRender(writer);
textBox1.RenderControl(writer);
RangeValidator1.RenderControl(writer);
RangeValidator2.RenderControl(writer);
}
}