【问题标题】:MVC DataAnnotations remove error messageMVC DataAnnotations 删除错误消息
【发布时间】:2012-04-30 20:31:15
【问题描述】:

我有以下视图模型字段:

[Required]
[StringLength(9)]
[RegularExpression(@"\d{9}", ErrorMessageResourceName = "Number_Format", ErrorMessageResourceType = typeof(MyTypeOfResource))]
public string Number{ get; set; }

正则表达式过滤器将处理大于 9 个字符和正确格式的输入并显示其验证消息,但 StringLength 也会显示其自己的默认错误消息。删除[StringLength(9)] 将解决两条不同消息的问题,但我认为此过滤器为 SQL 提供了有关数据类型最大大小的有价值信息。还有其他方法吗?谢谢,

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    如果您删除 StringLength 并且只有:

    [Required]
    [RegularExpression(@"\d{9}", ErrorMessageResourceName = "Number_Format", ErrorMessageResourceType = typeof(MyTypeOfResource))]
    public string Number{ get; set; }
    

    你应该很好。 RequiredAttribute 将验证属性是否已设置,RegularExpressionAttribute 将验证它是一个由 9 个字符组成的字符串,都是数字。

    编辑:

    关于假设过滤器为 SQL 提供有价值信息的评论......不,它不是为了这样做。 DataAnnotations 旨在架起客户端和表示层验证之间的桥梁。 MVC 确实在内部使用 DataAnnotations 来验证 ViewModel,但 ViewModel 不一定(阅读:不应该)被视为域模型。 ViewModel 是您希望向用户显示的模型,而域模型通常代表数据。

    我不久前写了一篇博客,向您介绍了 MVC 3 中的 DataAnnotations,以及该框架如何将它们转变为客户端上不显眼的 JavaScript 验证。绝对值得一试。

    Code is hereblog is here

    【讨论】:

      【解决方案2】:

      更改 StringLength 属性以包含空白错误消息,如下所示:

      [StringLength(9, ErrorMessage = "")]
      

      【讨论】:

      • 空字符串似乎不再起作用了。我必须至少添加一个空格。
      猜你喜欢
      • 2012-08-19
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2011-05-26
      • 2016-11-17
      相关资源
      最近更新 更多