代码之家  ›  专栏  ›  技术社区  ›  Fermin

如何将RegularExpression数据批注与资源文件一起使用

  •  2
  • Fermin  · 技术社区  · 14 年前

    我目前正在使用MVC 1.0和.NET 3.5。我正在使用数据注释来验证我的模型。我正在尝试添加使用正则表达式来验证邮政编码。当我尝试以下操作时,我已经将regex存储在资源文件中,因为许多模型都会使用它:

    [RegularExpression(Resources.RegexPostcode, ErrorMessage="Postcode format invalid")]
    public string Postcode { get; set; }
    

    生成时出现以下错误:

    属性参数必须是 常量表达式,typeof表达式 或数组创建表达式 属性参数类型。

    是否有任何方法可以将资源文件中的值用作regex,或者需要将实际的regex字符串输入到每个具有邮政编码的模型中?

    谢谢

    2 回复  |  直到 8 年前
        1
  •  5
  •   Jab    14 年前

    我建议您制作自己的验证属性。这将使regex保持在一个位置以及错误消息。

    class PostcodeAttribute : RegularExpressionAttribute
    {
        public PostcodeAttribute() : base("your regex")
        {
            this.ErrorMessage = "Postcode format invalid";
        }
    }
    
        2
  •  0
  •   Community    7 年前

    无法对接受的答案发表评论,因为我没有足够的代表。

    这个被接受的答案对我很有用,但是需要做一些调整来使用不引人注目的JavaScript验证。需要 IClientValidatable 此答案的位: https://stackoverflow.com/a/18041534/1714585