【问题标题】:How to set input type="number" on dynamic textbox in c# codebehind如何在 C# 代码隐藏中的动态文本框上设置输入类型 =“数字”
【发布时间】:2012-02-08 22:28:20
【问题描述】:

我在 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 方式。)

【问题讨论】:

标签: c# html asp.net


【解决方案1】:

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

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

【讨论】:

  • 我认为您需要在 HtmlControls 上使用 SetAttribute,不是吗?
  • 我假设他指的是System.Web.UI.WebControls.TextBox,而不是 HtmlControl。
  • 这对我不起作用。我不得不使用这个解决方案:stackoverflow.com/a/9398840/266535
【解决方案2】:

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

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 的类型。

【讨论】:

  • 这是不必要的,除非您无法将update 应用于正确解决此问题的 ASP.Net。
【解决方案3】:

对于仍然遇到同样问题的任何人,在 OP 打开此问题几个月后,Microsoft 发布了修复该问题的更新:

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

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

【讨论】:

    猜你喜欢
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多