StringLength与MaxLength属性entity frameworkEF Code First的ASP.NET MVC

[MaxLength][StringLength]属性的行为有什么不同?

据我所知(除了[MaxLength]可以validation数组的最大长度)这些是相同的,有点多余?

entity framework使用MaxLength决定在创build数据库时多大的string值字段。

来自MSDN:

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

StringLength是将用于validation用户input的数据注释。

来自MSDN:

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

一些快速但非常有用的额外信息,我刚刚从另一篇文章中学到,但似乎无法find文档(如果任何人都可以在MSDN上共享一个链接,它将是惊人的):

与这些属性相关联的validation消息实际上将replace与属性相关联的占位符。 例如:

 [MaxLength(100, "{0} can have a max of {1} characters")] public string Address { get; set; } 

如果超出字符限制,将输出以下内容: “地址最多可以包含100个字符”

我知道的占位符是:

  • {0} =属性名称
  • {1} =最大长度
  • {2} =最小长度

非常感谢bloudraak最初指出这一点。

以下是我们EF code firstEF code first使用[MaxLength][StringLength]属性的结果。 如果两者都被使用, [MaxLength]赢得比赛。 在下面的课程中查看studentname列中的testing结果

  public class Student { public Student () {} [Key] [Column(Order=1)] public int StudentKey { get; set; } //[MaxLength(50),StringLength(60)] //studentname column will be nvarchar(50) //[StringLength(60)] //studentname column will be nvarchar(60) [MaxLength(50)] //studentname column will be nvarchar(50) public string StudentName { get; set; } 1511015514 public byte[] RowVersion { get; set; } } 

所有好的答案…从validation的angular度来看,我也注意到MaxLength只在服务器端validation,而StringLength在客户端validation。

MaxLengthAttribute表示最大。 允许的数组或string数​​据的长度

StringLengthAttribute表示最小。 和最大。 数据字段中允许的字符长度

访问http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/

当使用该属性限制网页上表单的文本的最大input长度时,StringLength似乎会生成maxlength html属性(至less在我用MVC 5testing的时候)。 然后select你想要提醒用户这是最大的文本长度。 使用stringlength属性,用户将无法input超出允许的长度。 maxlength属性不添加这个html属性,而是生成数据validation属性,这意味着用户可以input超出指定的长度,并防止更长的input取决于JavaScript中的validation,当他移动到下一个字段或点击提交(或如果JavaScript被禁用,服务器端validation)。 在这种情况下,可以通过错误消息通知用户该限制。

另一个需要注意的地方是MaxLength属性中,您只能提供最大需求范围而不是最小需求范围。 而在StringLength中,你可以同时提供。