【问题标题】:Ways to share regex across DataAnnotations /Attributes跨 DataAnnotations /Attributes 共享正则表达式的方法
【发布时间】:2023-03-25 08:44:01
【问题描述】:

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

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

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

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

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

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

有什么解决办法吗?

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

【问题讨论】:

    标签: c# regex data-annotations


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多