我正在使用System.ComponentModel.DataAnnotations命名空间,以便在我的ASP.NET MVC应用程序上进行一些验证。
我已经遇到了使用RegularExpression注释的问题。
因为这些注释是属性,所以它们需要常量表达式。
好的,我可以使用一个填充正则表达式字符串常量的类。
问题在于我不想用C#解析器所需的转义字符污染我的正则表达式。我的偏好是将正则表达式存储在资源文件中。
问题是我无法在数据注释中使用这些字符串资源,因为它们不是常量!
有没有解决方案?
如果没有,这似乎是使用属性进行验证的一个重要限制。
答案 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作为代理,从您的资源文件中加载正则表达式。