【问题标题】:Separate error message for Minimum and Maximum string length - MVC4 Data annotation最小和最大字符串长度的单独错误消息 - MVC4 数据注释
【发布时间】:2013-01-24 23:02:51
【问题描述】:

有人可以分享他们在 MVC 中使用数据注释为最小和最大字符串长度分别设置错误消息的实现吗?

似乎StringLength 只允许单个错误消息MinLength/MaxLength 不会生成不显眼的验证标记,因为它们不是IClientValidatable

虽然这似乎是一个非常普遍的要求,但我在网络上找不到实现。

【问题讨论】:

  • 这些会生成不显眼的验证属性吗?
  • 是的,javascript 会在客户端执行正则表达式
  • 酷,那么请随时回答问题。
  • 这应该在 4.5 MinLength MaxLength 属性中完成:msdn.microsoft.com/en-us/library/… 在我的情况下,我需要 RegEx 来获取其他一些错误消息和 min max,但我无法升级版本,所以我需要进行自定义验证。

标签: asp.net-mvc-4 validation data-annotations


【解决方案1】:

您可以使用RegularExpression 数据注释进行最小检查,并使用StringLength 属性进行最大检查。 Javascript 将在客户端执行正则表达式,因此它们很好且不显眼!每个属性只能使用一个RegularExpression 属性,否则您可以使用正则表达式同时计算最大值和最小值。

至少 5 个字符

[RegularExpression(@"^.{5,}$", ErrorMessage = "Minimum 5 characters required")]

最多 50 个字符

[StringLength(50, ErrorMessage = "Maximum {2} characters exceeded")]

【讨论】:

  • 嘿,我刚试过这个,我不能用 2 它说重复属性!大声笑我仍然需要一个解决方案:(
  • 啊。我知道他们的工作不显眼...如果将其中一个用于最低限度,将[StringLength(50, ErrorMessage = "Maximum {2} characters exceeded")] 用于最大值呢?
  • 好主意 :) 我使用 StringLength(int.MaxValue, ErrorMessage = "Minimum") 作为最小值,使用正则表达式作为最大值。再次感谢
  • 多行时会失败 [RegularExpression(@"^[\s\S]{5,}$", ErrorMessage = "Minimum 5 characters required")] 将使它工作多行
  • 我个人认为这不是一个合适的答案,因为您可能已经在使用正则表达式来处理其他事情(在我的例子中,密码字段带有正则表达式来检查特定字符)。我认为正确的方法可能是扩展 StringLength 或创建自己的属性。
【解决方案2】:

虽然不是单独的消息,但这就是我所做的:

[StringLength(30, ErrorMessage = "Must be between {2} and {1} characters long.", MinimumLength = 6)]

【讨论】:

  • 如果不使用[Required]且字符串为空,则忽略MinimumLength。
【解决方案3】:
[StringLength(800, ErrorMessage = "<img src='/images/icon-info.png' /><p>The {0} must be between {2} and {1} characters long.</p>", MinimumLength = 6)]

这将显示图像以及最小和最大长度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2018-11-07
    • 1970-01-01
    相关资源
    最近更新 更多