是什么在[MaxLength]
和[StringLength]
属性的行为有什么区别?
据我可以告诉(所不同的是[MaxLength]
可以验证一个阵列的最大长度),这些都是相同的,并且有些多余?
MaxLength用于实体框架来决定如何大,以使一个字符串值字段时,它会创建数据库。
从MSDN:
指定允许在一个属性数组或字符串数据的最大长度。
StringLength是将被用于用户输入的验证数据注释。
从MSDN:
指定允许在一个数据字段中的字符的最小和最大长度。
我刚刚从另一篇文章了解到,但似乎无法找到的文件有些快,但非常有用的附加信息(如果任何人都可以共享MSDN上的链接,这将是惊人的):
与这些属性相关的验证消息实际上将替换与属性相关联的占位符。例如:
[MaxLength(100, "{0} can have a max of {1} characters")]
public string Address { get; set; }
请问如果超过字符限制输出如下:“地址可以有100个字符的最大”
我知道的占位符:
许多感谢bloudraak的初步指出了这一点。
以下是结果时,我们同时使用[MaxLength]
和[StringLength]
属性,在EF code first
。如果两者都使用,[MaxLength]
赢得了比赛。见下面类studentname
柱的测试结果
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; }
[Timestamp]
public byte[] RowVersion { get; set; }
}
所有好的答案...从验证的角度来看,我也注意到,得到的MaxLength仅在服务器端验证,而StringLength被在客户端验证过。
MaxLengthAttribute意味着最大。允许阵列或字符串数据的长度
StringLengthAttribute指民。和最大值。个字符的长度被允许在数据字段中
访问http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/
其中还有一点要注意下来是maxlength属性,你只能提供所需的最大射程不分钟要求的范围内。而在StringLength你可以同时提供。
当使用以限制从网页上的形式的文本的最大输入长度属性,则StringLength似乎产生最大长度HTML属性(至少在我与MVC 5测试)。你想如何提醒,这是最大文本长度用户选择然后一个depnds。随着stringlength属性,用户将根本无法输入超出允许的长度。 maxlength属性不添加此HTML属性,而不是其产生的数据验证属性,这意味着,用户可以输入超过指定的长度,并且防止再输入他移动到下一个场或点击提交时取决于在JavaScript的验证(或如果JavaScript被禁用,服务器端验证)。在这种情况下,用户可以通过一个错误消息被通知的限制。
我已经通过添加低于我的上下文行解决它:
modelBuilder.Entity<YourObject>().Property(e => e.YourColumn).HasMaxLength(4000);
不知怎的,[MaxLength]
并没有为我工作。