2

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

我已经遇到了正则表达式注释的问题。

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

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

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

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

有什么解决办法吗?

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

4

3 回答 3

3

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

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

总是用字符串编写正则表达式@"..."——避免了很多麻烦。

于 2009-12-08T06:28:30.627 回答
0

显然,在 .NET 4 中有对 DataAnnotations 属性的覆盖,这些属性在其构造函数中采用Func< string>描述为“启用验证资源访问的函数”。

于 2009-12-09T01:59:55.090 回答
0

您可以创建一个像这样的自定义验证属性作为代理,它将从您的资源文件中加载正则表达式。

于 2010-06-07T15:04:39.800 回答