2010-07-12 65 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

相关问题