2012-01-12 93 views
7

我有一个C#/ ASP.NET网页动态创建的文本框,我想适应移动浏览器:如何设置输入类型=在C#代码隐藏动态文本“数字”

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

我看,我可以直接设置在这一个普通的HTML <form>

<input type="number"> 

...这将随后弹出的数字键盘。

我怎样才能做到这一点与我的代码隐藏动态文本框,或可以吗?

是否有从会更好地工作代码隐藏把数字输入控制我的网页上动态的替代方法?在渲染后我需要使用JavaScript来“控制”控件吗? (我宁愿有可能的话做的.NET的方式。)

+0

http://forums.asp.net/p/1574486/3959550.aspx – 2012-01-12 16:19:15

回答

9

我从内存中写入这一点,但我认为这是:

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

我想你需要[SetAttribute](http://msdn.microsoft.com/en-us/library/system.web.ui .htmlcontrols.htmlcontrol.setattribute.aspx)在HtmlControls上,不是吗? – 2012-01-12 16:20:28

+0

我假设他指的是'System.Web.UI.WebControls.TextBox',而不是一个HTMLLoader对象。 – 2012-01-12 16:21:58

+0

完美,谢谢! (是的,那是因为你认为约翰。) – Deverill 2012-01-12 16:36:42

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> 

类型属性从以上modifyType财产所应采取。所以这也可以是货币或HTML5支持的任何其他类型。

+1

这是不必要的,除非你不能应用[更新](http://support.microsoft.com/kb/2533523)至ASP.Net正确地解决了这个问题。 – 2013-06-05 16:21:36

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找到。

+1

感谢您的更新!我相信其他人会赞赏它。 – Deverill 2013-09-05 19:41:31

相关问题