HTML5类型设置返回空控件文本属性



出现以下问题:正在asp.net/vb.net/ajax网站上使用Visual Studio 2010,我正在尝试在现有的文本框控件中使用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>

但在codeehind中,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",一切都很好。。。呃。。。

感谢您的指导。。。

Dave

Ugh。。。回答我自己的问题。。。

因此,据推测,文本框控件中的"TextMode将支持Framework 4.5中的电子邮件等模式(我这边没有测试),但我现在无法升级,所以一点创造性的"变通"让我通过了。

因此,基本上我添加了一个隐藏字段控件,并使用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某人,但如果其他人有更优雅的解决方案。。。请添加

最新更新