在DataAnnotations / Attributes之间共享正则表达式的方法

时间:2009-12-08 05:33:40

标签: c# regex data-annotations

我正在使用System.ComponentModel.DataAnnotations命名空间,以便在我的ASP.NET MVC应用程序上进行一些验证。

我已经遇到了使用RegularExpression注释的问题。

因为这些注释是属性,所以它们需要常量表达式。

好的,我可以使用一个填充正则表达式字符串常量的类。

问题在于我不想用C#解析器所需的转义字符污染我的正则表达式。我的偏好是将正则表达式存储在资源文件中。

问题是我无法在数据注释中使用这些字符串资源,因为它们不是常量!

有没有解决方案?

如果没有,这似乎是使用属性进行验证的一个重要限制。

3 个答案:

答案 0 :(得分:3)

在C#中,只需要一个转义码(双引号)... 如果你使用逐字字符串文字:

@"like \this\ note \slash here does nothing only quote "" needs doubling
you can even use newline";

总是@"..."字符串写正则表达式 - 避免许多麻烦。

答案 1 :(得分:0)

显然在.NET 4中,DataAnnotations attribubtes的覆盖在其构造函数中将Func< string>描述为“允许访问验证资源的函数。”

答案 2 :(得分:0)

您可以创建自定义验证属性like this作为代理,从您的资源文件中加载正则表达式。