2010-07-12 2 views
23

Wie ich es verstehe, das <input type=email> Element in HTML5 wird als ein einfaches Textfeld in Browser zeigen, die den Tag nicht unterstützen. Bei anderen Browsern wird es richtig gerendert, wie auf dem iPhone wird es das E-Mail-Tastaturlayout anzeigen.Wie kann ich mit HTML5 E-Mail-Eingangstyp mit serverseitigen .NET

würde Ich mag diese aber sind meine Eingabefelder <asp:TextBox> Steuerelemente in einem Projekt verwenden. Wie kann ich das HTML5-Element verwenden, aber trotzdem wie alle anderen Felder auf die Datenserverseite zugreifen?

+2

i beachten sollte, ein einfaches runat = Server hinzufügen zu dem Eingabeelement mit type = email hat nicht funktioniert – Michael

+0

Wenn Sie ihm einen Namen geben, dann können Sie nicht einfach zugreifen wie jedes andere Feld mit seinem Namen? – Iznogood

+0

Konnte ein Duplikat von http: // stackoverflow sein.com/questions/3388160/iphone-email-tastatur-layout-mit-asp-net-textbox – ajcw

Antwort

2

Unabhängig davon, ob es als Server Kontrolle zugänglich ist, sollten Sie in der Lage sein, die HttpRequest.Form Sammlung zuzugreifen und den Wert abzurufen. Unabhängig davon, was der Browser mit dem Tag macht, muss er eine Zeichenfolge an den Server senden.

+0

in der uhr, ich sehe nur die runat = server-steuerung in request.form. Das bringt mich dazu zu denken, dass dieses Formular dieses Feld NICHT an den Server sendet - nur die runat = server controls – Michael

0

Sie müssen ein eigenes benutzerdefiniertes Steuerelement erstellen und die Render-Routinen überschreiben. Fühlen Sie sich frei, entweder den Quellcode oder DLLs

25

Es ist ein Update für .NET Framework 4 zu verwenden, die Sie das type-Attribut

http://support.microsoft.com/kb/2468871 angeben können.

Siehe feature 3 Weg nach unten die Seite

Merkmal 3

Neue Syntax können Sie eine TextBox-Steuerelement definieren, die HTML5 kompatibel ist. Zum Beispiel definiert die folgende Code ein Textboxsteuerelement, die HTML5 kompatibel:

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

Dieses Update auf einem Windows 2003 Server installiert und das Problem nicht gelöst, aber die Antwort von Milox hat funktioniert. –

16

Sie versuchen, die Attribute manuell hinzufügen können, wie:

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

Funktioniert mit ASP.NET 3.5 –

+0

Diese Lösung funktionierte nicht für mich in ASP.NET 4.0 –

2

in Ihrer ASPX-Datei hinzufügen

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

in Ihrem Code Hinter .cs

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

Dieser arbeitete für mich

4

Leider habe ich ein bisschen spät, um die Partei bin, obwohl ich, dass andere denken, kann davon profitieren, was ich tat. Ich habe eine Seite, die HTML 5 ist, obwohl wir noch .NET 3.5 haben. Wir wollten das .NET-Element beibehalten, obwohl der Typ in E-Mail geändert wurde. Ich habe mehrere Methoden (einschließlich Milox oben) vergeblich versucht, obwohl das, was für mich funktionierte, das Folgende war: Ich fügte dem Element selbst eine JavaScript-Eigenschaft inline hinzu (wenn ich es in ein Skript-Tag steckte, würde es nicht auswählen up aus irgendeinem Grund ...) Hier ist, was Ihr Tag aussehen würde, wenn Sie meine Änderungen verwenden:

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

Eli

+0

Große Lösung! Funktioniert auch mit type = number, praktisch für mobile Webseiten – Roland

+0

Schön, dass es auch für Sie funktioniert hat - herzlich willkommen! – Eli

Verwandte Themen