2012-01-12 61 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

相關問題