2011-04-12 16 views
13

que tienen las siguientes propiedades en mi modeloASP.Net MVC3 Email/Teléfono Anotaciones de datos no funcionan

[Required] 
    [DataType(DataType.PhoneNumber, ErrorMessage = "Invalid Phone Number")] 
    public string PhoneNumber 
    { 
     get; 
     set; 

    } 

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

    } 

la vista correspondiente es

<td> 
        Email 
       </td> 
       <td> 
        @Html.EditorFor(model => model.EmailAddress) 
        @Html.ValidationMessageFor(model => model.EmailAddress, "*") 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Phone # 
       </td> 
       <td> 
        @Html.TextBoxFor(model => model.PhoneNumber) 
        @Html.ValidationMessageFor(model => model.PhoneNumber, "*") 
       </td> 

cuando me hacen esta página veo la Atributo requerido que se activa. Pero el atributo DataType no se activa si ingreso datos no válidos. Veo el html fuente y no veo ningún código emitido para estas validaciones. He lo siguiente como parte de mi visión demasiado

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"/> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"/> 

Respuesta

10

ver este mensaje:

Is the DataTypeAttribute validation working in MVC2?

Es importante tener en cuenta que el atributo Tipo de datos se utiliza generalmente para fines de formato, no para la validación . Técnicamente hay una amplia gama de formatos de correo electrónico y número de teléfono (consulte aquí para el correo electrónico: http://www.regular-expressions.info/email.html).

Además, los convertidores personalizados pueden convertirse en cadenas que aparentemente no son de correo electrónico (yo en el dominio punto com = [email protected]) y, por lo tanto, las expresiones regulares de validación vuelan por la ventana. Depende del desarrollador utilizar la expresión regular correcta para su propósito específico y asegurarse de que solo acepte una dirección que considere precisa.

7

acabo de tener un problema similar a mí mismo. Tenía la configuración del modelo con un tipo de datos de correo electrónico, pero no estaba siendo validado como un correo electrónico. Noté en el html que la vista producida en el cuadro de texto para la dirección de correo electrónico tenía un tipo de texto. entonces alteré mi punto de vista que a continuación y esta arreglado:

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

la estaba usando la validación de jQuery JavaScript libary

+1

El correo electrónico del tipo de entrada es específica HTML 5 - sólo ser mostrada como un cuadro de texto normal en los navegadores antiguos. –

16

Se podría considerar el uso de ASP.NET MVC 3 Futures. Here es un buen artículo que describe las validaciones allí:

public class UserInformation 
{ 
    [Required] 
    public string Name { get; set; } 

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

    [Required] 
    [Url] 
    public string Website { get; set; } 

    [Required] 
    [CreditCard] 
    public string CreditCard { get; set; } 

    [Required] 
    [FileExtensions(Extensions = "jpg,jpeg")] 
    public string Image { get; set; } 
} 
Cuestiones relacionadas