【问题标题】:How can I use HTML5 email input type with server-side .NET如何在服务器端 .NET 中使用 HTML5 电子邮件输入类型
【发布时间】:2011-03-15 00:13:31
【问题描述】:

据我了解,HTML5 中的 <input type=email> 元素将在不支持该标签的浏览器中呈现为简单的文本字段。在其他浏览器上它会正确呈现,就像在 iPhone 上它会调出电子邮件键盘布局。

我想在项目中使用它,但我的输入字段是 <asp:TextBox> 控件。如何使用 HTML5 元素,但仍像其他字段一样在服务器端访问其数据?

【问题讨论】:

  • 我应该注意,将简单的 runat=server 添加到 type=email 的输入元素不起作用
  • 如果你给它一个名字,那么你不能像任何其他字段一样访问它的名字吗?

标签: asp.net html webforms


【解决方案1】:

.NET framework 4 有一个更新,允许您指定类型属性

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

在页面下方查看feature 3

功能 3

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

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

【讨论】:

  • 在 Windows 2003 服务器上安装了此更新,但没有解决问题,但 Milox 的回答确实有效。
【解决方案2】:

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

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

【讨论】:

  • 适用于 ASP.NET 3.5
【解决方案3】:

抱歉,我参加聚会有点晚了,尽管我认为其他人可以从我所做的事情中受益。我有一个 HTML 5 页面,尽管我们仍然有 .NET 3.5。我们希望保留 .NET 元素,但将类型更改为电子邮件。我尝试了几种方法(包括上面的 Milox)都无济于事,但对我有用的方法如下:我在元素本身内联添加了一个 JavaScript 属性(当我把它放在脚本标签中时它不会选择出于某种原因...) 如果您使用我的更改,您的标签将如下所示:

&lt;asp:TextBox runat="server" type="email" onfocus="this.type='email'"/&gt;

伊莱

【讨论】:

  • 很好的解决方案!也适用于 type=number,方便移动网页
  • 很高兴它也对您有用 - 非常欢迎您!
【解决方案4】:

无论它是否可作为服务器控件访问,您都应该能够访问HttpRequest.Form 集合并检索该值。无论浏览器对标签做什么,它都必须向服务器提交一个字符串。

【讨论】:

  • 在手表中,我只看到 request.form 中的 runat=server 控件。所以这让我觉得这个表单没有将该字段发送到服务器 - 只有 runat=server 控件
【解决方案5】:

在你的 .aspx 文件中添加

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

在您的 .cs 代码中

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

这对我有用

【讨论】:

    【解决方案6】:

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

    【讨论】:

      猜你喜欢
      • 2013-05-04
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2012-12-31
      • 2012-04-29
      相关资源
      最近更新 更多