Рендеринг asp.TextBox для html5 input type = "date" - PullRequest
18 голосов
/ 04 мая 2010

Я не знаю, спрашивалось ли это раньше, тоже не смог найти.

Можно ли контролировать тип входного текста, который отображается asp: TextBox? Я хотел бы изменить его на <input type="date">

любые предложения или комментарии приветствуются, спасибо

Ответы [ 6 ]

30 голосов
/ 20 июня 2011

Существует обновление для .NET Framework 4, которое позволяет указывать атрибут типа

http://support.microsoft.com/kb/2468871.

См. feature 3 путь вниз по странице

Функция 3

Новый синтаксис позволяет вам определить Элемент управления TextBox, который является HTML5 совместимы. Например, следующее Код определяет элемент управления TextBox, который HTML5 совместимый:

<asp:TextBox runat="server" type="some-HTML5-type" />
6 голосов
/ 17 ноября 2011

Если вы не возражаете против подклассов, вы можете сделать это, переопределив AddAttributesToRender

public class DateTextbox : System.Web.UI.WebControls.TextBox
{
    protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
    {
        writer.AddAttribute("type", "date");
        base.AddAttributesToRender(writer);
    }
}
3 голосов
/ 18 мая 2010

Вот как я это сделал ... надеюсь, это поможет ...

Добавьте в проект новый элемент типа «JScript File», затем вставьте этот код в:

var setNewType;
if (!setNewType) {
setNewType = window.onload = function() {
    var a = document.getElementsByTagName('input');
    for (var i = 0; i < a.length; i++) {
        if (a[i].getAttribute('xtype')) {
            a[i].setAttribute('type', a[i].getAttribute('xtype'));
            a[i].removeAttribute('xtype');
        };
    }
}

Теперь добавьте эту строку на страницу aspx после тега body (измените имя файла на то, что вы назвали выше!):
<script type="text/javascript" src="setNewType.js"></script>

Наконец, добавьте что-то вроде следующего в ваш код за PageLoad (я использовал VB здесь):

aspTxtBxId.Attributes("xtype") = "tel" ' or whatever you want it to be

Важной частью выше являются Атрибуты. ("Xtype") , поскольку он помещает атрибут XTYPE в визуализированный html для "текстового поля", которое затем находит JavaScript и использует для замены оригинала. атрибут "тип".

Удачи!
FJF

2 голосов
/ 01 августа 2016

Я знаю, что этот вопрос старый, но у меня была такая же проблема в приложении веб-форм. Вам нужно использовать TextMode

Пока в документации говорится, что

Используйте свойство TextMode, чтобы указать способ отображения элемента управления TextBox. Три общие опции - это однострочное, многострочное или текстовое поле для пароля.

Вы также можете использовать html5, дату, время, номер и т. Д., Встроенные в Visual Studio 2012/2013.

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.textmode(v=vs.110).aspx

1 голос
/ 23 июля 2010

Я пошел по пути создания собственного набора html5-входов путем создания пользовательских элементов управления. Я получаю пользовательские клавиатуры на iPad и iPhone, а также код обратной передачи настоящих элементов управления asp.net. Это сработало для моего внутреннего проекта, поэтому я решил лицензировать весь пакет, чтобы сэкономить другим людям время и усилия на его создание с нуля.

Надеюсь, это поможет!

0 голосов
/ 05 мая 2010

На самом деле нет простого способа переопределить атрибут type в стандартном asp: TextBox. Вы можете одновременно использовать элемент ввода

Вот пример

<input type="date" id="Input1" runat="server" />

Дайте мне знать, если это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...