HTML5 类型设置 returns 空控件文本 属性
HTML5 type setting returns empty control text property
遇到以下问题:
Visual Studio 2010 年在 asp.net/vb.net/ajax 网站上工作,我正在尝试在现有文本框控件中使用 HTML5 type="email"
为触摸屏设备生成电子邮件目标键盘显示...
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
...
<asp:TextBox ID="Email" runat="server" CssClass="txtBox" type="email"></asp:TextBox>
<asp:Button ID="Confirmation" runat="server" Text="Confirm" CssClass="btnBox" OnClick="Confirmation_Click" OnClientClick="setFocus();" />
...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Confirmation" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
但在代码隐藏中,Email.txt
返回空字符串。如果我删除 type="email"
,一切都很好。
所以这就引出了一个问题,我假设类型定义覆盖了文本框控件的隐含 type="text"
那么我如何才能访问异步回发的控件值?或者我可以吗?
msg = String.Format("Email:{0} ", Email.Text)
更新:
还尝试将带有基本 html 元素的请求表单与 Request.Form
结合使用,但在 type="email"
时仍然无法检索值
...
<asp:TextBox ID="Email" name="Email" runat="server" CssClass="txtBox" type="email"></asp:TextBox><br />
<input id="Email1" name="Email1" type="email" CssClass="txtBox" />
...
代码隐藏
...
If Not Request.Form("Email1") Is Nothing Then
temp = Request.Form("Email1").ToString
End If
If Not Request.Form("Email") Is Nothing Then
temp = Request.Form("Email").ToString
End If
...
但如果我更改 type="text"
,一切都很好...呃...
感谢任何指导...
戴夫
呃...回答我自己的问题...
据推测,文本框控件中的 "TextMode
" 将支持 Framework 4.5 中的电子邮件等模式(我这边未测试),但我目前无法升级,所以有点创意"work around" 让我通过了。
所以基本上我添加了一个隐藏字段控件并使用 JavaScript 将控件注入电子邮件字段中的值,这使我的代码后面可以使用值集...请参见下面的代码。
<script type="text/javascript">
function setFocus() {
...
var hdnEmail = document.getElementById("HDNEmail");
var emlEmail = document.getElementById("Email1");
hdnEmail.value = emlEmail.value;
...
}
</script>
...
<input id="Email1" name="Email1" type="email" class="txtBox" />
<asp:HiddenField ID="HDNEmail" runat="server" ClientIDMode="Static"></asp:HiddenField>
...
<asp:Button ID="ctlBTNConfirmation" runat="server" Text="Confirm" CssClass="btnBox" OnClick="Confirmation_Click" OnClientClick="setFocus();" />
...
代码隐藏
...
temp = HDNEmail.Value
...
HTH 某人,但如果其他人有更优雅的解决方案...请添加
遇到以下问题:
Visual Studio 2010 年在 asp.net/vb.net/ajax 网站上工作,我正在尝试在现有文本框控件中使用 HTML5 type="email"
为触摸屏设备生成电子邮件目标键盘显示...
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
...
<asp:TextBox ID="Email" runat="server" CssClass="txtBox" type="email"></asp:TextBox>
<asp:Button ID="Confirmation" runat="server" Text="Confirm" CssClass="btnBox" OnClick="Confirmation_Click" OnClientClick="setFocus();" />
...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Confirmation" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
但在代码隐藏中,Email.txt
返回空字符串。如果我删除 type="email"
,一切都很好。
所以这就引出了一个问题,我假设类型定义覆盖了文本框控件的隐含 type="text"
那么我如何才能访问异步回发的控件值?或者我可以吗?
msg = String.Format("Email:{0} ", Email.Text)
更新:
还尝试将带有基本 html 元素的请求表单与 Request.Form
结合使用,但在 type="email"
...
<asp:TextBox ID="Email" name="Email" runat="server" CssClass="txtBox" type="email"></asp:TextBox><br />
<input id="Email1" name="Email1" type="email" CssClass="txtBox" />
...
代码隐藏
...
If Not Request.Form("Email1") Is Nothing Then
temp = Request.Form("Email1").ToString
End If
If Not Request.Form("Email") Is Nothing Then
temp = Request.Form("Email").ToString
End If
...
但如果我更改 type="text"
,一切都很好...呃...
感谢任何指导...
戴夫
呃...回答我自己的问题...
据推测,文本框控件中的 "TextMode
" 将支持 Framework 4.5 中的电子邮件等模式(我这边未测试),但我目前无法升级,所以有点创意"work around" 让我通过了。
所以基本上我添加了一个隐藏字段控件并使用 JavaScript 将控件注入电子邮件字段中的值,这使我的代码后面可以使用值集...请参见下面的代码。
<script type="text/javascript">
function setFocus() {
...
var hdnEmail = document.getElementById("HDNEmail");
var emlEmail = document.getElementById("Email1");
hdnEmail.value = emlEmail.value;
...
}
</script>
...
<input id="Email1" name="Email1" type="email" class="txtBox" />
<asp:HiddenField ID="HDNEmail" runat="server" ClientIDMode="Static"></asp:HiddenField>
...
<asp:Button ID="ctlBTNConfirmation" runat="server" Text="Confirm" CssClass="btnBox" OnClick="Confirmation_Click" OnClientClick="setFocus();" />
...
代码隐藏
...
temp = HDNEmail.Value
...
HTH 某人,但如果其他人有更优雅的解决方案...请添加