DataAnnotations StringLength属性MVC - 没有最大值

时间:2012-07-09 23:04:46

标签: asp.net-mvc asp.net-mvc-4 data-annotations minimum string-length

我在MVC4中使用Data Annotations进行模型验证,并且我当前正在使用StringLengthAttribute但是我不想指定最大值(当前设置为50),但是DO想要指定最小字符串长度值。

有没有办法只指定最小长度?也许我可以使用另一个属性?

我目前的代码是:

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Confirm New Password")]
    [StringLength(50, MinimumLength = 7)]
    [CompareAttribute("NewPassword", ErrorMessage = "The New Password and Confirm New Password fields did not match.")]
    public string ConfirmNewPassword { get; set; }

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:41)

  

有没有办法只指定最小长度?也许另一个   我可以使用哪个属性?

使用标准数据注释,否。您必须指定MaximumLength。只有其他参数是可选的。

在这种情况下,我建议这样的事情:

[StringLength(int.MaxValue, MinimumLength = 7)]

你也可以使用像这样的正则表达式(正则表达式):

[RegularExpression(@"^(?:.*[a-z]){7,}$", ErrorMessage = "String length must be greater than or equal 7 characters.")]

有关此内容的更多信息:Password Strength Validation with Regular Expressions

答案 1 :(得分:6)

答案 2 :(得分:1)

您是否考虑过移除数据注释并将Html属性添加到视图中的Html.TextBoxFor元素?

应该看起来像:

@Html.TextBoxFor(model => model.Full_Name, new { htmlAttributes = new { @class = "form-control", @minlength = "10" } })

@Html.TextBoxFor(model => model.Full_Name, new { @class = "form-control",  @minlength = "10" } })

10是您选择的最小长度。

我喜欢在我的视图中添加html属性,因为我可以很快看到它的影响。没有弄乱您的数据库,如果使用迁移(代码优先方法),则不需要您运行迁移和数据库更新。

请记住,当您将EditorFor更改为TextBoxFor时,您将失去样式,但应该是一个简单的修复,再次您只需将样式添加到视图或添加样式到CSS文件。

希望这会有所帮助:)

答案 3 :(得分:0)

好工作弗朗索瓦, 您似乎无法使用数据注释在输入字段上发出maxlength属性。它只是提供客户端验证。 使用带有HTML属性的maxlength创建了正确设置了maxlength的输入字段。

@Html.EditorFor(model => model.Audit_Document_Action, new { htmlAttributes = new { @class = "form-control", @maxlength = "10" } })