Email model validation with DataAnnotations and DataType

104,017

Solution 1

DataType attribute is used for formatting purposes, not for validation.

I suggest you use ASP.NET MVC 3 Futures for email validation.

Sample code:

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

If you happen to be using .NET Framework 4.5, there's now a built in EmailAddressAttribute that lives in System.ComponentModel.DataAnnotations.EmailAddressAttribute.

Solution 2

The DataAnnotationsExtensions project has an Email attribute that you can use.

Solution 3

I have looked at the source code (reverse engineered by Reflector) and DataType variants are actually not even implemented! (This was for DateType.Date)

So it is not going to work.

I would personally use RegexValidation for email.


For clarity, here is the implementation of IsValid in class DataTypeAttribute:

public override bool IsValid(object value)
{
    return true;
}
Share:
104,017
lifeofbenschi
Author by

lifeofbenschi

Updated on April 08, 2021

Comments

  • lifeofbenschi
    lifeofbenschi about 3 years

    I have following model:

    public class FormularModel
    {
        [Required]
        public string Position { get; set; }
        [Required]
        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }
        [Required]
        public string Webcode { get; set; }
    }
    

    Required validation works fine. But when i try with DataType it doesn't react.

    Here is my razor code for the email control:

       @Html.TextBoxFor
              (model => model.Email, 
               new { @style = "width: 175px;", @class = "txtField" }
              ) * 
    

    So, anyone know an answer?

    TIA