2012-01-12 38 views
7

Tôi có một TextBox động tạo ra trong một trang web C#/ASP.NET mà tôi muốn để thích ứng với các trình duyệt di động:Làm thế nào để thiết lập input type = "number" trên textbox động trong C# codebehind

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

tôi thấy rằng tôi có thể trực tiếp thiết lập điều này trong một HTML thuần túy <form>:

<input type="number"> 

... sau đó sẽ đưa lên bàn phím số.

Làm cách nào tôi có thể thực hiện việc này với Hộp văn bản động của tôi trong codebehind hoặc tôi có thể làm như vậy?

Có cách nào khác để đặt điều khiển nhập số trên trang của tôi động từ trình mã hóa hoạt động tốt hơn không? Tôi có cần sử dụng JavaScript để "hack" điều khiển sau khi nó hiển thị không? (Tôi thà có một cách NET làm việc đó nếu có thể.)

+0

http://forums.asp.net/p/1574486/3959550.aspx –

Trả lời

9

Tôi viết thư này từ bộ nhớ, nhưng tôi nghĩ đó là:

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

Tôi nghĩ bạn cần [SetAttribute] (http://msdn.microsoft.com/en-us/library/system.web.ui .htmlcontrols.htmlcontrol.setattribute.aspx) trên HtmlControls, phải không ?. –

+0

Tôi giả sử anh ta đang đề cập đến 'System.Web.UI.WebControls.TextBox', không phải là HtmlControl. –

+0

Hoàn hảo, cảm ơn bạn! (Vâng, đúng như bạn đã giả định John.) – Deverill

0

Điều này có thể được thực hiện bằng một điều khiển tùy chỉnh. Ở đây bạn đi ...

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); 
     } 
    } 
} 

đăng ký nó trong trang aspx ..

<%@ Register Namespace="CustomTextBoxControls" TagPrefix="CustomControl" Assembly="CustomTextBoxControls" %> 

<CustomControl:MaskedTextBoxWithType id="txtNumber" modifyType="number" runat="server"></CustomControl:MaskedTextBoxWithType> 

Các loại thuộc tính sẽ được lấy từ tài sản trên modifyType. Vì vậy, đây cũng có thể là tiền tệ hoặc bất kỳ loại nào khác với hỗ trợ HTML5.

+1

Điều này là không cần thiết trừ khi bạn không thể áp dụng [update] (http://support.microsoft.com/kb/2533523) để ASP.Net sửa lỗi này đúng cách. –

3

Đối với bất cứ ai vẫn đến đây với cùng một vấn đề, một vài tháng sau khi OP mở câu hỏi này Microsoft phát hành một nâng cấp cho sửa chữa vấn đề:

http://support.microsoft.com/kb/2533523 (thấy vấn đề số 12).

Đối với Visual Studio 2010, nếu bạn cố gắng cài đặt và nó nói rằng nó không áp dụng cho bạn, hãy kiểm tra xem bạn có VS2010 SP1 hay không. Trong trường hợp đó, chỉ cần cài đặt SP1 có thể giải quyết được vấn đề. Tải xuống có thể được tìm thấy tại http://www.microsoft.com/en-us/download/details.aspx?id=23691.

+1

Cảm ơn bạn đã cập nhật! Tôi chắc rằng những người khác sẽ đánh giá cao nó. – Deverill

Các vấn đề liên quan