¿Es posible establecer el tipo de entrada generada por TextBoxFor?

1 minuto de lectura

Estoy usando ASP.NET MVC 3 TextBoxFor en un formulario y me gustaría usar type=”email” para una entrada más fácil para al menos algunos dispositivos móviles, pero no puedo encontrar cómo configurarlo usando TextBoxFor. ¿No es esto fácilmente posible?

En vista

@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)

en modelo

[StringLength(50)]
public string Email { get; set; }

(Ya está usando una anotación de datos para proteger la restricción de tamaño en la base de datos)

  • posible duplicado de la etiqueta MVC HTML5 EMAIL

    – András Zoltan

    4 sep 2012 a las 15:55

  • Pregunté por separado porque no me importaba la validación de correo electrónico en la que entra la respuesta a esa pregunta mientras miraba cuál era mi problema raíz de obtener una entrada de tipo correo electrónico.

    – d456

    04/09/2012 a las 18:00

Tratar de usar

@Html.TextBoxFor(m => m.Email, new { @type = "email" })

http://msdn.microsoft.com/en-us/library/ee703538.aspx (atributos html)

  • No sé por qué descarté esto y no lo intenté. Gracias.

    – d456

    4 de septiembre de 2012 a las 16:06

Avatar de usuario de Toan
A una

Lo estás usando de la manera incorrecta.

Utilice EditorFor en Vista:

@Html.LabelFor(m => m.Email)
@Html.EditorFor(m => m.Email)

En el modelo, agregue el [DataType( DataType.EmailAddress )] Propiedad de anotaciones de datos:

[DataType( DataType.EmailAddress )]
public string Email { get; set; }

Intenta agregar [DataType( DataType.EmailAddress )] a la propiedad de correo electrónico.

[DataType( DataType.EmailAddress )]
[StringLength(50)]
public string Email { get; set; }

avatar de usuario de arnoldrob
arnoldrob

[StringLength(50)]
[DataType(DataType.EmailAddress, ErrorMessage = "Invalid Email Address")]
public string EmailAddress { get; set; }

Intenta agregar esto. creo que funciona

¿Ha sido útil esta solución?