如何设置输入类型=";“数字”;c#codebeahind中的动态文本框

如何设置输入类型=";“数字”;c#codebeahind中的动态文本框,c#,html,asp.net,C#,Html,Asp.net,我在C#/ASP.NET网页中有一个动态创建的文本框,我想适应移动浏览器: TextBox qtybox = new TextBox(); qtybox.ID="qtybox"; qtybox.Text = "0"; qtybox.Width = 30; container.Controls.Add(qtybox); 我发现我可以直接在普通HTML中设置它: …然后将显示数字键盘 如何使用codebehind中的动态文本框执行此操作,或者我可以 有没有其他方法可以从co

我在C#/ASP.NET网页中有一个动态创建的文本框,我想适应移动浏览器:

TextBox qtybox = new TextBox();  
qtybox.ID="qtybox";   
qtybox.Text = "0";  
qtybox.Width = 30;   
container.Controls.Add(qtybox);
我发现我可以直接在普通HTML中设置它:


…然后将显示数字键盘

如何使用codebehind中的动态文本框执行此操作,或者我可以


有没有其他方法可以从codebehind动态地在我的页面上放置数字输入控件,这样效果会更好?我是否需要在控件呈现后使用JavaScript“破解”该控件?(如果可能的话,我宁愿用.NET的方式来做。)

我是凭记忆写的,但我认为它是:

qtybox.Attributes.Add("type", "number");

这可以使用自定义控件来完成。给你

namespace CustomTextBoxControls
{
    public class TextBoxWithType : TextBox
    {
        public string modifyType { get; set; }

        protected override void Render(System.Web.UI.HtmlTextWriter output)
        {
            if (!string.IsNullOrEmpty(modifyType))
            {
                output.AddAttribute("type", modifyType);
            }

            base.Render(output);
        }
    }
}
在aspx页面中注册

<%@ Register Namespace="CustomTextBoxControls" TagPrefix="CustomControl" Assembly="CustomTextBoxControls" %>

<CustomControl:MaskedTextBoxWithType id="txtNumber" modifyType="number" runat="server"></CustomControl:MaskedTextBoxWithType>


类型属性将取自上面的modifyType属性。因此,这也可以是货币或支持HTML5的任何其他类型。

对于仍然带着相同问题来到这里的任何人,在OP打开此问题几个月后,Microsoft发布了一个更新来修复此问题:

(见第12期)


对于VisualStudio2010,如果您尝试安装它,但它说它不适用于您,请检查您是否有VS2010 SP1。在这种情况下,只需安装SP1就可以解决问题。下载可以在。

找到,我想你需要HtmlControl,不是吗?我想他指的是
系统.Web.UI.WebControls.TextBox
,不是HtmlControl。这对我不起作用。我不得不使用这个解决方案:这是不必要的,除非你不能应用到ASP.Net来正确解决这个问题。
<%@ Register Namespace="CustomTextBoxControls" TagPrefix="CustomControl" Assembly="CustomTextBoxControls" %>

<CustomControl:MaskedTextBoxWithType id="txtNumber" modifyType="number" runat="server"></CustomControl:MaskedTextBoxWithType>