Мне нужно создать пользовательский TextBox, который принимает текст или цифры. После PostBack я хочу проверить значение, и если это не цифры - белый пробел позади TextBox со словами «Not Digits!». Я сделал свойство Number, которое проверяет значение, и если все нормально - поместите его в viewstate, иначе напишите строку «Not Digits!». Вот код:Пользовательский веб-элемент управления ASP.NET TextBox
namespace NumericTextBoxLibraryV2
{
[DefaultProperty("Number")]
[ToolboxData("<{0}:NumericTextBox runat=server></{0}:NumericTextBox>")]
public class NumericTextBox : TextBox
{
public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;
if(!Int32.TryParse(value, out number))
notNumber = "Digits only!";
}
}
[Bindable(true)]
[Category("Appearance")]
//[DefaultValue("")]
//[Localizable(true)]
public int Number
{
get
{
if(ViewState["Number"] == null)
{
ViewState["Number"] = 0;
}
number = (int)ViewState["Number"];
return number;
}
set
{
Match match = Regex.Match(value.ToString(), @"^\d+$");
if (match.Success)
{
ViewState["Number"] = value;
notNumber = string.Empty;
}
else
{
notNumber = "Digits only!";
}
}
}
private int number;
private string notNumber;
protected override void Render(HtmlTextWriter writer)
{
writer.Write(@"<span>{0} </span><br />", notNumber);
base.Render(writer);
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Number);
}
}
}
Вопрос: Как вы можете видеть, что я могу получить значение в TextBox прописан только из текста собственности. Есть ли способ написать код, который установит значение не в текст, а в мой номер свойства? И как сделать показано не свойство Text, а Number?
Спасибо! Все работает! –