2010-07-12 64 views
23

據我所知,HTML5中的<input type=email>元素將在不支持標籤的瀏覽器中呈現爲簡單的文本字段。在其他瀏覽器上,它會正確渲染,就像在iPhone上它會彈出電子郵件鍵盤佈局。如何在服務器端.NET中使用HTML5電子郵件輸入類型

我想在項目中使用它,但我的輸入字段是<asp:TextBox>控件。我怎樣才能使用HTML5元素,但仍然像我的其他領域一樣訪問其數據服務器端?

+2

我要指出,增加一個簡單的RUNAT =服務器輸入元素與類型=電子郵件不起作用 – Michael 2010-07-12 20:37:23

+0

如果你給它一個名字,那麼你不能只訪問像任何其他領域的名稱? – Iznogood 2010-07-12 20:40:46

+0

可能是http:// stackoverflow的副本。com/questions/3388160/iphone-email-keyboard-layout-with-asp-net-textbox – ajcw 2011-02-08 09:56:38

回答

2

無論它是否可作爲服務器控件訪問,您應該能夠訪問HttpRequest.Form集合並檢索該值。無論瀏覽器如何處理標籤,它都必須向服務器提交一個字符串。

+0

在手錶中,我只看到request.form中的runat = server控件。所以這讓我認爲這種形式並不是將該字段發送到服務器 - 只有runat =服務器控制 – Michael 2010-07-12 21:00:08

0

您需要創建自己的自定義控件並覆蓋渲染例程。隨意使用任一的源代碼或DLL

25

沒有爲.NET框架4的更新,其允許用戶指定的類型屬性

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

feature 3一路下跌的頁面

特點3

的新語法允許您定義 TextBox控件是HTML5兼容 。例如,下面的 代碼定義了一個TextBox控件是 HTML5兼容:

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

在Windows 2003服務器上安裝了此更新,但它沒有解決問題,但是Milox的答案確實有效。 – 2013-07-10 19:36:46

16

你可以嘗試手動添加的屬性,如:

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

適用於ASP.NET 3.5 – 2014-01-30 00:56:42

+0

此解決方案在ASP.NET 4.0中對我無效 – 2015-06-15 09:40:26

2
在.aspx文件

添加

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

在你的代碼後面.cs

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

這爲我工作

4

對不起,我有點遲到了,但我認爲其他人可以從我做了什麼好處。雖然我們仍然有.NET 3.5,但我有一個HTML 5的頁面。我們想要保持.NET元素,儘管將類型更改爲電子郵件。我已經嘗試了幾種方法(包括上面的Milox)無濟於事,儘管爲我工作的方法如下:我爲內聯元素添加了JavaScript屬性(當我將它放在腳本標記中時,它不會選擇因某種原因...) 這裏是你的代碼是什麼樣子,如果你用我的變化:

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

+0

偉大的解決方案!也適用於類型=數字,方便移動網頁 – Roland 2017-08-29 15:14:49

+0

很高興它爲你工作 - 你非常歡迎! – Eli 2017-08-29 17:00:11

相關問題