2010-07-12 32 views
23

Như tôi đã hiểu, phần tử <input type=email> trong HTML5 sẽ hiển thị dưới dạng trường văn bản đơn giản trong các trình duyệt không hỗ trợ thẻ. Trên các trình duyệt khác, nó sẽ hiển thị đúng cách, giống như trên iPhone, nó sẽ hiển thị bố cục bàn phím e-mail.Làm cách nào để sử dụng loại đầu vào email HTML5 với phía máy chủ .NET

Tôi muốn sử dụng điều này trong một dự án nhưng các trường nhập của tôi là các điều khiển <asp:TextBox>. Làm cách nào để sử dụng phần tử HTML5 nhưng vẫn truy cập được phía máy chủ dữ liệu của nó như phần còn lại của các trường của tôi?

+2

tôi nên lưu ý, thêm một runat = server đơn giản phần tử đầu vào có type = email không hoạt động – Michael

+0

Nếu bạn đặt tên cho nó thì bạn không thể truy cập giống như bất kỳ lĩnh vực nào khác với tên của nó? – Iznogood

+0

Có thể trùng lặp với lưu lượng truy cập http: // stackoverflow.com/questions/3388160/iphone-email-keyboard-layout-với-asp-net-textbox – ajcw

Trả lời

2

Bạn có thể truy cập vào bộ sưu tập HttpRequest.Form và truy xuất giá trị đó hay không. Cho dù trình duyệt có làm gì với thẻ, nó phải gửi một chuỗi tới máy chủ.

+0

trong đồng hồ, tôi chỉ thấy các điều khiển runat = server trong request.form. do đó làm cho tôi nghĩ rằng biểu mẫu này KHÔNG gửi trường đó đến máy chủ - chỉ có điều khiển runat = server – Michael

0

Bạn cần tạo điều khiển tùy chỉnh của riêng mình và ghi đè lên các thường trình Render. Hãy sử dụng một trong hai mã nguồn hoặc DLL

25

Có một bản cập nhật cho NET framework 4 cho phép bạn chỉ định các loại thuộc tính

http://support.microsoft.com/kb/2468871.

Xem feature 3 đường xuống trang

Tính năng 3

cú pháp mới cho phép bạn xác định một điều khiển TextBox đó là HTML5 tương thích. Ví dụ, mã sau định nghĩa một điều khiển TextBox đó là HTML5 tương thích:

<asp:TextBox runat="server" type="some-HTML5-type" /> 
+0

Cài đặt bản cập nhật này trên máy chủ Windows 2003 và nó không khắc phục được sự cố, tuy nhiên câu trả lời của Milox đã làm việc. –

16

bạn có thể thử thêm các thuộc tính bằng tay, như:

TextBox1.Attributes["type"] = "email"; 
TextBox1.Attributes["type"] = "url"; 
TextBox1.Attributes["type"] = "number"; 
+0

Hoạt động với ASP.NET 3.5 –

+0

Giải pháp này không hoạt động đối với tôi trong ASP.NET 4.0 –

2

trong file .aspx của bạn thêm

<input type="text" required autofocus placeholder="Email Address" 
class="txt-input txt-input-username" ID="myTextBox" runat="server"/> 

trong mã của bạn Đằng sau .cs

myTextBox.Attributes["type"] = "email"; 

này làm việc cho tôi

4

Xin lỗi tôi hơi muộn để đảng, mặc dù tôi nghĩ rằng những người khác có thể hưởng lợi từ những gì tôi đã làm. Tôi có một trang mà là HTML 5 mặc dù chúng tôi vẫn có NET 3.5. Chúng tôi muốn giữ nguyên tố .NET, mặc dù có sự thay đổi kiểu email. Tôi đã thử một số phương pháp (bao gồm cả Milox ở trên) để không có kết quả, mặc dù cái đã làm việc cho tôi như sau: Tôi đã thêm một thuộc tính JavaScript vào phần tử nội tuyến (khi tôi đặt nó trong một thẻ script, nó sẽ không chọn lên đối với một số lý do ...) đây là những gì từ khóa của bạn sẽ trông như thế nào nếu bạn sử dụng thay đổi của tôi:

<asp:TextBox runat="server" type="email" onfocus="this.type='email'"/>

Eli

+0

Giải pháp tuyệt vời! Cũng hoạt động với loại = số, tiện dụng cho các trang web di động – Roland

+0

Rất vui khi nó hoạt động cho bạn - bạn rất được hoan nghênh! – Eli

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