Asp.net mvc dataannotation Проверка MaxLength не работает

Я использую asp.net mvc4 в своей модели. Я использую атрибут Maxlength, но он не работает для строки. Только Stringlength работает, у кого такая же проблема? если возник вопрос о том, как решить проблему? он не работает для проверки моего поля Вот мой код

(не работает)

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

(рабочий)

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

Ответы

Ответ 1

Оба атрибута находятся в пространстве имен System.ComponentModel.DataAnnotations

Согласно атрибуту [MaxLength] официального веб-сайта Microsoft для Entity Framework, поскольку Entity Framework знает, какой может быть максимальная длина столбца в базе данных в вашем случае (например, varchar (80))

Задает максимальную длину массива или строковых данных, разрешенных в свойстве.

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

Как и в одном из ваших комментариев, вы сказали, что не используете Entity Framework в ответ на @jackncoke, поэтому [MaxLength(80)] не будет работать

Но во втором случае [StringLength(80)] работает, потому что он не имеет никакой зависимости от Entity Framework.

SO [StringLength(80)] будет работать в обоих случаях, если вы используете Entity Framework или без него

Задает минимальную и максимальную длину символов, допустимых в поле данных.

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

Ответ 3

В MVC4 MaxLength работает правильно, я должен проверить его

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