如何设置输入类型=“;数字“;关于c#codebehind中的动态文本框

本文关键字:c#codebehind 关于 动态 文本 数字 何设置 设置 输入 类型 | 更新日期: 2023-09-27 18:20:11

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

TextBox qtybox = new TextBox();  
qtybox.ID="qtybox";   
qtybox.Text = "0";  
qtybox.Width = 30;   
container.Controls.Add(qtybox);

我看到我可以直接在纯HTML <form>:中设置它

<input type="number">

然后将显示数字键盘。

我如何在代码后台使用我的动态TextBox来实现这一点,或者我可以吗?

有没有另一种方法可以从codeehind动态地在我的页面上放置数字输入控件,效果更好?我需要在控件渲染后使用JavaScript来"破解"它吗?(如果可能的话,我宁愿用.NET的方式来做。)

如何设置输入类型=“;数字“;关于c#codebehind中的动态文本框

我是用内存写的,但我认为它是:

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

对于仍然有同样问题的人,在OP打开这个问题几个月后,微软发布了一个修复问题的更新:

http://support.microsoft.com/kb/2533523(见第12期)。

对于Visual Studio 2010,如果您尝试安装它,但它说它不适用于您,请检查您是否有VS2010 SP1。在这种情况下,只需安装SP1就可以解决问题。下载可在http://www.microsoft.com/en-us/download/details.aspx?id=23691.

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

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>

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