我在我的模型中使用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; }
答案 0 :(得分:29)
两个属性都在System.ComponentModel.DataAnnotations
命名空间
根据实体框架中的Microsoft官方网站[MaxLength]
属性
因为实体框架知道在您的情况下数据库中列的最大长度(例如 varchar(80))
指定属性中允许的数组或字符串数据的最大长度。
正如你们其中一条评论中所说,你们没有使用实体框架回复 @jackncoke ,所以[MaxLength(80)]
将无效
但是在第二种情况下[StringLength(80)]
正在运行,因为它对Entity Framework没有任何依赖性。
如果您正在使用Entity Framework或没有它,那么SO [StringLength(80)]
将适用于这两种情况
指定数据字段中允许的最小和最大字符长度。
答案 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; }
}