asp.netasp.net-mvc-4

Asp.net mvc dataannotation MaxLength validation does not work


I am using ASP.NET MVC4 in my model I am using the Maxlength attribute but it does not work for string. Only StringLength works anyone have same problem? If had issue how to resolve? It does not work to validate my field. Here is my code

(not working)

[Required]
[MaxLength(80)]
[DisplayName("Contact Name:")]
public string ContactName { get; set; }

(working)

[Required]
[StringLength(80)]
[DisplayName("Contact Name:")]
public string ContactName { get; set; }

Solution

  • 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