2012-03-25 18 views

Respuesta

6

El método de ayuda EditorFor está un tanto fuera de la caja y todavía no parece ser compatible con el atributo HTML5 type="email".

Sus opciones en este momento parecen estar usando TextBoxFor o creando una plantilla personalizada que le permitirá establecer el atributo type de la entrada. Aquí está another thread que revisa algunas de las opciones para crear sus propias plantillas.

El DataAnnotation [DataType(DataType.EmailAddress)] es en realidad bastante útil. Establece el id y el name de su campo de formulario en email, que puede usar con la validación de jQuery para mostrar los mensajes de validación del lado del cliente del usuario. Aplicar el DataAnnotation a su clase de modelo también significa que la propiedad de correo electrónico en su modelo se validará automáticamente en el lado del servidor. Si habilita la validación discreta en su aplicación, obtendrá validación del lado del cliente y de los servidores casi de forma gratuita.

+0

no se puede hacer que esto sucede incluso con TextBoxFor –

13

Puede anular los atributos HTML, a la que un explorador se replegará para type='text' si no lo soportan:

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

6

parece estar apoyado ahora.

@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control", @type = "email" } }) 
3

Como una adición a jortizromo 's respuesta, tiene ahora por lo menos dos opciones:

  1. Especificación @type en el parámetro htmlAttributes para el método EditorFor() como en

    @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @type = "email" } }) 
    
  2. Usando el atributo de anotación EmailAddress de System.ComponentModel.DataAnnotations espacio de nombres en la definición de clase modelo para el Email propiedad correspondiente y una simple llamada al método EditorFor() (esto proporciona etiquetas de datos de validación de HTML que podría ser una idea buena o mala dependiendo de su tarea) como en

    modelo de vista

    [EmailAddress] 
    public string Email { get; set; } 
    

    Razor Ver

    @Html.EditorFor(model => model.Email) 
    
Cuestiones relacionadas