Asp.net mvc dataannotation MaxLength validation does not work

[MaxLength(80)] change to [StringLength(80)] but looks like you beat me to it!

Your not the only one with this problem

MaxLength Attribute not generating client-side validation attributes


Both Attributes are in System.ComponentModel.DataAnnotations namespace

As per Microsoft Official Website [MaxLength] attribute in for Entity Framework because Entity Framework knows what can be the maximum length of the column in the database in your case(like varchar(80))

Specifies the maximum length of array or string data allowed in a property.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.maxlengthattribute.aspx

As in one of you comment you have said you are not using Entity Framework in reply with @jackncoke so [MaxLength(80)] will not work

But in second case [StringLength(80)] is working because it does not have any dependency over Entity Framework.

SO [StringLength(80)] will work in both cases if you are using Entity Framework or without it

Specifies the minimum and maximum length of characters that are allowed in a data field.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.stringlengthattribute.aspx


IN MVC4 MaxLength workd properly, i have to check it

public class RegisterModel
{
    [Required]
    [Display(Name = "User name")]
    [MaxLength(5)]  //MaxLength worked properly.
    public string UserName { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

enter image description here