2010-07-12 11 views
23

del lado del servidor Como lo entiendo, el elemento <input type=email> en HTML5 se representará como un campo de texto simple en los navegadores que no admiten la etiqueta. En otros navegadores, se procesará correctamente, como en el iPhone, mostrará el diseño del teclado del correo electrónico.¿Cómo puedo utilizar el tipo de entrada de correo electrónico HTML5 con el .NET

Me gustaría utilizar esto en un proyecto pero mis campos de entrada son <asp:TextBox> controles. ¿Cómo puedo usar el elemento HTML5 pero aún acceder a su servidor de datos como el resto de mis campos?

+2

deben tener en cuenta, la adición de un runat = server sencilla al elemento de entrada con type = email no funcionó – Michael

+0

Si le das un nombre, ¿no puedes simplemente acceder como cualquier otro campo con su nombre? – Iznogood

+0

Podría ser un duplicado de http: // stackoverflow.com/questions/3388160/iphone-email-keyboard-layout-with-asp-net-textbox – ajcw

Respuesta

2

Ya sea que esté o no accesible como control de servidor, debe poder acceder a la colección HttpRequest.Form y recuperar el valor. No importa lo que el navegador haga con la etiqueta, tiene que enviar una cadena al servidor.

+0

en el reloj, solo veo los controles runat = server en request.form. así que eso me hace pensar que este formulario NO está enviando ese campo al servidor; solo runat = server controla – Michael

0

Debe crear su propio control personalizado y anular las rutinas de Render. No dude en utilizar el código fuente o DLL

25

Hay una actualización para .NET Framework 4, que le permite especificar el atributo type

http://support.microsoft.com/kb/2468871.

Ver feature 3 abajo en la hoja

característica 3

nueva sintaxis permite definir un control de cuadro de texto que es HTML5 compatibles. Por ejemplo, el siguiente código define un control TextBox que es compatible con HTML5 :

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

Se instaló esta actualización en un servidor de Windows 2003 y no solucionó el problema; sin embargo, la respuesta de Milox sí funcionó. –

16

puede intentar añadir manualmente los atributos, como:

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

Funciona con ASP.NET 3.5 –

+0

Esta solución no funcionó para mí en ASP.NET 4.0 –

2

en su archivo .aspx añadir

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

en su código detrás .cs

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

Esto funcionó para mí

4

En este momento estoy un poco tarde a la fiesta, aunque creo que otros puedan beneficiarse de lo que hice. Tengo una página que es HTML 5, aunque todavía tenemos .NET 3.5. Queríamos mantener el elemento .NET, aunque tenemos el tipo de cambio para enviar por correo electrónico. He intentado varios métodos (incluido Milox más arriba) en vano, aunque el que funcionó para mí fue el siguiente: agregué una propiedad de JavaScript al elemento en sí en línea (cuando lo ponía en una etiqueta de script no elegía por alguna razón ...) Esto es lo que la etiqueta se vería si se utiliza mis cambios:

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

Eli

+0

¡Gran solución! Funciona también con tipo = número, útil para páginas web móviles – Roland

+0

Me alegro de que funcionó para usted también. ¡De nada! – Eli

Cuestiones relacionadas