2016-04-08 5 views
0

Haben Sie das folgende Problem: Arbeiten ist Visual Studio 2010 auf einer asp.net/vb.net/ajax Website und ich versuche, HTML5 type="email" in einem vorhandenen Textfeld Steuerelement zu generieren eine E-Mail gezielt Tastaturanzeige für Touchscreen-Geräte ...HTML5-Typ Einstellung gibt leere Steuerelement Text Eigenschaft

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

aber in Code-Behind, die Email.txt ist eine leere Zeichenfolge zurück. Wenn ich die type="email" entferne, ist alles gut.

Also, das stellt die Frage, ich nehme an, dass die Typdefinition die implizierten type="text" für das Textfeld-Steuerelement überschreibt, also wie kann ich auf den Steuerwert für das asynchrone Postback zugreifen? Oder kann ich überhaupt?

msg = String.Format("Email:{0} ", Email.Text) 

UPDATE:

auch versucht, mit Request.Form Anfrageformular mit einfachem HTML-Elemente in Verbindung mit und noch nicht die Werte abrufen konnte, wenn 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" /> 
... 

Codebehind

... 
     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 
... 

aber wenn ich die type="text" ändern, ist alles in Ordnung ... puh ...

Vielen Dank für jede Führung ...

Dave

Antwort

0

Ugh ... meine eigene Frage zu beantworten ...

Also angeblich, "TextMode "in der Textbox-Steuerelement wird Modi von E-Mail und dergleichen in Framework 4.5 (nicht auf meiner Seite getestet) unterstützt, aber ich kann nicht um diese Zeit aktualisieren und so ein wenig kreative" um zu arbeiten " mich durch.

Also im Grunde habe ich in einem versteckten Feld Steuerelement hinzugefügt und JavaScript verwendet, um das Steuerelement mit dem Wert in das Feld E-Mail injizieren, die meinen Code hinter den Wert gesetzt verwendet ... siehe Code unten.

<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();" /> 

... 

Codebehind

... 
temp = HDNEmail.Value 
... 

jemand HTH aber wenn jemand eine elegantere Lösung hat ... fügen Sie bitte