如何在c#代码后面的动态文本框中设置输入类型=“数字”

时间:2012-01-12 16:15:55

标签: c# html asp.net

我在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执行此操作,或者我可以吗?

是否有另一种方法可以在代码隐藏中动态地将数字输入控件放在我的页面上,以便更好地工作?在渲染后我是否需要使用JavaScript来“破解”控件? (如果可能的话,我宁愿采用.NET方式。)

3 个答案:

答案 0 :(得分:9)

我是从记忆中写下来的,但我认为是这样的:

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

答案 1 :(得分:3)

对于仍然带着同样问题来到这里的人,在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找到下载。

答案 2 :(得分:0)

这可以使用自定义控件完成。你去......

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支持的任何其他类型。