Подтвердить что ты не робот

Render ASP.NET TextBox как HTML5 Тип ввода "Число"

Когда ASP.NET TextBox создает, он производит:

<input type="text" />

Однако мне нужно, чтобы он отображался как тип номера HTML5, например:

<input type="number" />

Возможно ли это?

4b9b3361

Ответ 1

У меня было такое же требование для мобильного сайта с использованием ASP.NET. Не найдя хорошего решения, я попробовал просто установить type="number" прямо в текстовое поле. К моему удивлению, это сработало! Невероятно, я создал простой тестовый проект для двойной проверки. Я запустил эту строку кода в каждой версии .NET:

<!-- this HTML tested in each .NET version -->
<asp:TextBox runat="server" type="number" />

Вот результаты:

<!-- ASP.NET 2.0, 3.0, and 3.5 -->
<input name="ctl01" type="text" type="number" />

<!-- ASP.NET 4.0 and 4.5 -->
<input name="ctl01" type="number" />

В нижней строке: если вы используете ASP.NET 4.0 или новее, просто добавьте type="number" в текстовое поле.

Ответ 2

Отмените управление базовым текстовым полем

public class HTML5TextBox : TextBox
{
.....
protected override void Render(HtmlTextWriter writer)
{
//Sth like the code below, you need do some research though
 writer.AddAttribute(HtmlTextWriterAttribute.Type,"Number");
 writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID + "_displayTXT");
 writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID + "t1");
 writer.AddAttribute(HtmlTextWriterAttribute.Value,base.Text);
 writer.RenderBeginTag(HtmlTextWriterTag.Input);       
 writer.RenderEndTag(); 
}
....
}

Или вы можете проверить тот, который я только что нашел в http://www.codeproject.com/Articles/68834/Enhanced-Textbox-Control

Ответ 3

вам нужно будет создать новый элемент управления, наследующий от TextBox и переопределить рендеринг, или вы можете сгенерировать фрагмент javascript, чтобы изменить его после факта.

Ответ 4

Я смог сделать это с помощью динамически созданного элемента управления следующим образом:

TextBox control = new TextBox();
control.Attributes.Add("Type", "number");

Ответ 5

установить type="number" в <asp:textbox type="number" runat="server"> независимо от того, что он не отображается в списке, неожиданно он будет работать