Asp.net mvc dataannotation MaxLength验证不起作用

时间:2013-01-31 15:18:32

标签: asp.net asp.net-mvc-4

我在我的模型中使用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; }

3 个答案:

答案 0 :(得分:29)

两个属性都在System.ComponentModel.DataAnnotations命名空间

根据实体框架中的Microsoft官方网站[MaxLength]属性 因为实体框架知道在您的情况下数据库中列的最大长度(例如 varchar(80)

  

指定属性中允许的数组或字符串数​​据的最大长度。

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

正如你们其中一条评论中所说,你们没有使用实体框架回复 @jackncoke ,所以[MaxLength(80)]将无效

但是在第二种情况下[StringLength(80)]正在运行,因为它对Entity Framework没有任何依赖性。

如果您正在使用Entity Framework或没有它,那么SO [StringLength(80)]将适用于这两种情况

  

指定数据字段中允许的最小和最大字符长度。

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

答案 1 :(得分:6)

[MaxLength(80)]更改为[StringLength(80)],但看起来你打败了它!

你不是唯一有这个问题的人

MaxLength Attribute not generating client-side validation attributes

答案 2 :(得分: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