Render ASP.NET TextBox как HTML5 Тип ввода «Число»
Когда ASP.NET TextBox визуализирует, он производит:
Однако мне нужно, чтобы он отображался как тип номера HTML5, например:
Это возможно?
- В чем разница между полем и свойством?
- В форме Django, как сделать поле readonly (или отключено), чтобы он не редактировался?
- Установка выбранного значения в формах Django. ChoiceField
- Почему никто не принимает публичные поля в C #?
- Функция Doctrine 2 mysql FIELD в порядке
- Могу ли я изменить приватное поле readonly на C #, используя reflection?
- c # - Как перебирать поля classов и задавать свойства
- Java: Как я могу получить доступ к полю classа по имени, хранящемуся в переменной?
- Как назначить «ссылку» на поле classа в c #?
- Использование attr_accessor и attr_accessible в одном поле
- Как создать текстовую строку в стиле заголовка в стиле заголовка?
- jQuery - Обнаружить изменение значения в скрытом поле ввода
- Автоматически реализованные геттеры и сеттеры против общедоступных полей
У меня было такое же требование для мобильного веб-сайта с использованием ASP.NET. Не найдя хорошего решения, я попробовал просто установить type="number"
непосредственно в текстовое поле. К моему удивлению, это сработало! Невероятно, я создал простой тестовый проект для двойной проверки. Я запустил эту строку кода в каждой версии .NET:
Вот результаты:
Итог: если вы используете ASP.NET 4.0 или новее, просто добавьте type="number"
в текстовое поле.
Переопределить элемент управления базовым текстовым полем
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
вам нужно будет создать новый элемент управления, наследующий от TextBox
и переопределить рендеринг, или вы можете сгенерировать fragment javascript, чтобы изменить его после факта.
Я смог сделать это с помощью динамически созданного элемента управления следующим образом:
TextBox control = new TextBox(); control.Attributes.Add("Type", "number");
Для этого TextMode
свойство TextMode
, например
могут быть представлены как
Текстовые моды в дополнение к [MultiLine | Пароль | SingleLine] были введены через некоторое время после VS2010 – документация не сообщает мне точно, когда.
set type="number"
в
независимо от того, что он не отображается в списке, неожиданно он будет работать