Si je comprends bien, l'élément <input type=email>
de HTML5 sera affiché sous forme de simple champ de texte dans les navigateurs ne prenant pas en charge la balise. Sur d'autres navigateurs, le rendu sera correct, comme sur l'iPhone, la disposition du clavier de messagerie apparaîtra.
Je souhaite l’utiliser dans un projet mais mes champs de saisie sont des contrôles <asp:TextBox>
. Comment puis-je utiliser l'élément HTML5 tout en ayant accès à ses données côté serveur, comme le reste de mes champs?
Il existe une mise à jour pour .NET Framework 4 qui vous permet de spécifier l'attribut type
http://support.Microsoft.com/kb/2468871 .
Voir feature 3
tout en bas de la page
Caractéristique 3
La nouvelle syntaxe vous permet de définir un contrôle TextBox compatible avec HTML5. Par exemple, le code suivant définit un contrôle TextBox compatible HTML5:
<asp:TextBox runat="server" type="some-HTML5-type" />
vous pouvez essayer d'ajouter les attributs manuellement, comme:
TextBox1.Attributes["type"] = "email";
TextBox1.Attributes["type"] = "url";
TextBox1.Attributes["type"] = "number";
Désolé, je suis un peu en retard à la fête, bien que je pense que d'autres peuvent tirer profit de ce que j'ai fait J'ai une page qui est HTML 5 bien que nous ayons toujours .NET 3.5. Nous voulions garder l’élément .NET, bien que le type soit changé en email. J'ai essayé plusieurs méthodes (dont Milox ci-dessus) en vain, bien que celle qui a fonctionné pour moi soit la suivante: j'ai ajouté une propriété JavaScript à l'élément lui-même en ligne (lorsque je l'ai insérée dans une balise de script, elle n'a pas été sélectionnée pour une raison quelconque ...) Voici à quoi ressemblerait votre tag si vous utilisiez mes modifications:
<asp:TextBox runat="server" type="email" onfocus="this.type='email'"/>
Eli
dans votre fichier .aspx, ajoutez
<input type="text" required autofocus placeholder="Email Address"
class="txt-input txt-input-username" ID="myTextBox" runat="server"/>
dans votre code derrière .cs
myTextBox.Attributes["type"] = "email";
Cela a fonctionné pour moi
Que ce soit ou non accessible en tant que contrôle serveur, vous devriez pouvoir accéder à la collection HttpRequest.Form
et récupérer la valeur. Quoi que le navigateur fasse avec la balise, il doit envoyer une chaîne au serveur.
Vous devez créer votre propre contrôle personnalisé et remplacer les routines de rendu. N'hésitez pas à utiliser le code source ou les DLL