web-dev-qa-db-fra.com

Comment utiliser le type d'entrée de courrier électronique HTML5 avec .NET côté serveur

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?

23
Michael

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" />
24
Chris Diver

vous pouvez essayer d'ajouter les attributs manuellement, comme:

TextBox1.Attributes["type"] = "email"; 
TextBox1.Attributes["type"] = "url"; 
TextBox1.Attributes["type"] = "number"; 
16
Milox

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

4
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

2
Shelly

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.

2
John Bledsoe

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

0
ja928