StringLength与MaxLength将ASP.NET MVC属性与Entity Framework EF Code First一起使用

如何解决StringLength与MaxLength将ASP.NET MVC属性与Entity Framework EF Code First一起使用

|
[MaxLength]
[StringLength]
属性的行为有何不同? 据我所知(“ 0”可以验证数组的最大长度)是相同的,并且有些多余吗?

解决方法

MaxLength用于实体框架,以决定创建数据库时将字符串值字段设置为多大。 从MSDN: 指定数组的最大长度 或属性中允许的字符串数据。 StringLength是一个数据批注,将用于验证用户输入。 从MSDN: 指定最小和最大 允许的字符长度 在数据字段中。,我刚刚从另一篇文章中学到了一些快速但极其有用的附加信息,但似乎找不到该文档的文档(如果有人可以在MSDN上共享指向该文档的链接,那将是惊人的): 与这些属性关联的验证消息实际上将替换与属性关联的占位符。例如:
[MaxLength(100,\"{0} can have a max of {1} characters\")]
public string Address { get; set; }
如果超出字符数限制,将输出以下内容: \“地址最多可包含100个字符\” 我知道的占位符是: {0} =属性名称 {1} =最大长度 {2} =最小长度 非常感谢bloudraak最初指出了这一点。,以下是在
EF code first
中同时使用
[MaxLength]
[StringLength]
属性时的结果。如果两者都使用,则
[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中,您可以同时提供两者。,我通过在上下文中添加以下行来解决此问题:
modelBuilder.Entity<YourObject>().Property(e => e.YourColumn).HasMaxLength(4000);
不知何故,“ 0”对我没有用。,当使用该属性限制网页上表单文本的最大输入长度时,StringLength似乎会生成maxlength html属性(至少在我的MVC 5测试中)。然后选择一个,然后根据您要如何提醒用户这是最大文本长度来决定。使用stringlength属性,用户将无法直接键入超出允许的长度。 maxlength属性未添加此html属性,而是生成数据验证属性,这意味着用户可以输入超出指定长度的内容,而防止输入更长的内容取决于当他移至下一个字段或单击提交时在javascript中进行的验证(或者如果禁用了javascript,则进行服务器端验证)。在这种情况下,可以通过错误消息将限制通知用户。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?