渲染asp.TextBox为html5输入type =“date”

时间:2010-05-04 19:51:35

标签: asp.net textbox html5

我不知道以前是否曾被问过,也找不到它。

是否可以控制由asp:TextBox呈现的输入文本的类型?我想将其更改为<input type="date">

欢迎任何建议或意见,谢谢

6 个答案:

答案 0 :(得分:30)

.NET framework 4有一个更新,允许您指定类型属性

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

请参阅页面上的feature 3

  

功能3

     

新语法允许您定义   TextBox控件是HTML5   兼容。例如,以下内容   代码定义了一个TextBox控件   HTML5兼容:

<asp:TextBox runat="server" type="some-HTML5-type" />

答案 1 :(得分:6)

如果您不介意子类化,可以通过覆盖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);
    }
}

答案 2 :(得分:3)

我是这样做的...希望它有所帮助...

将新项目添加到“JScript文件”类型的项目中,然后将此代码粘贴到:

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');
        };
    }
}

现在在 body 标记之后将此行添加到您的aspx页面中(将文件名更改为您在上面调用的任何内容!):
    <script type="text/javascript" src="setNewType.js"></script>

最后,在PageLoad后面的代码中添加如下内容(我在这里使用VB):

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

上面的重要部分是 Attributes。(“xtype”),因为它将属性XTYPE放置在“textbox”的渲染html中,然后javascript会找到并用来替换原始的“类型”属性。

祝你好运!
FJF

答案 3 :(得分:2)

我知道这个问题很老,但我在Web窗体应用程序中遇到了同样的问题。您需要使用TextMode

虽然文档说明了

  

使用TextMode属性指定TextBox控件的显示方式。三种常见选项是单行,多行或密码文本框。

您还可以使用Visual Studio 2012/2013中内置的html5,日期,时间,数字等。

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

答案 4 :(得分:1)

答案 5 :(得分:0)

实际上没有简单的方法来覆盖标准asp:TextBox中的type属性。 您只需使用输入元素

即可

这是一个例子

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

如果有帮助,请告诉我......