MVC DataAnnotations删除错误消息

时间:2012-04-30 20:31:16

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

我有以下视图模型字段:

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

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

2 个答案:

答案 0 :(得分:2)

如果您删除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

答案 1 :(得分:1)

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

[StringLength(9, ErrorMessage = "")]