如何在服务器端的.NET中使用HTML5电子邮件输入类型?

25
据我的理解,HTML5中的<input type=email>元素在不支持该标签的浏览器中将呈现为简单的文本字段。而在其他浏览器中,它将正常呈现,比如在iPhone上,则会弹出电子邮件键盘布局。
我想在一个项目中使用它,但我的输入字段是<asp:TextBox>控件。我怎样才能在仍然像其他字段一样访问其数据的情况下使用HTML5元素?

2
我应该指出,在输入类型为电子邮件的元素中添加一个简单的“runat=server”并没有起作用。 - Michael
如果你给它一个名称,那么你不就可以像访问其他字段一样通过它的名称来访问吗? - Iznogood
可能是 https://dev59.com/wk_Ta4cB1Zd3GeqPBH2j 的重复。 - ajcw
6个回答

25

有一个针对.NET Framework 4的更新,使得您可以指定类型属性。

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

请参阅页面底部的 feature 3

特性 3

新语法允许您定义与HTML5兼容的 TextBox 控件。例如,以下代码定义了一个与HTML5兼容的 TextBox 控件:

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

安装了这个更新在一个 Windows 2003 服务器上,但它并没有解决问题,然而 Milox 的答案确实起作用了。 - Martin Belcher - AtWrk

17

你可以尝试手动添加属性,例如:

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

适用于 ASP.NET 3.5。 - Alex Angas

5
抱歉我来晚了,但我认为其他人可以从我所做的受益。 我有一个页面,它是HTML 5,尽管我们仍然使用.NET 3.5。 我们想保留.NET元素,但将类型更改为电子邮件。 我尝试了几种方法(包括上面的Milox),但都没有成功,但对我有效的是以下方法:我在元素本身内联添加了JavaScript属性(当我将其放入脚本标记中时,由于某种原因它不会被捕获...) 如果您使用我的更改,则标记将如下所示:

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

Eli

很棒的解决方案!也适用于type=number,非常适合移动网页。 - Roland
很高兴它也对你起作用了 - 非常感谢你! - Eli

3
无论它是否作为服务器控件可访问,您都应该能够访问HttpRequest.Form集合并检索值。无论浏览器如何处理标记,它都必须向服务器提交字符串。

在监视器中,我只看到请求表单中的runat=server控件。这让我认为该表单没有将该字段发送到服务器 - 只有runat=server控件。 - Michael

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";

这对我有用。

0
你需要创建自己的自定义控件并覆盖渲染例程。可以随意使用源代码或DLL文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接