C#FluentValidation读取模式从常量不起作用

时间:2016-09-01 12:46:45

标签: c# regex asp.net-mvc fluentvalidation

我在从类中读取静态字符串时遇到问题,该字符串用于验证我的模式。 当我调试时,我看到花括号被放入方括号中。 这是我的班级:

public static class ArticleConstant
{
    public const int LengthOfArticleNumber = 9;
    public static readonly string PatternArticleNumber = "^[A-Z0-9]{9}$";
}

我也试过

public static readonly string PatternArticleNumber = "^[A-Z0-9]\{9\}$";
public static readonly string PatternArticleNumber = "^[A-Z0-9]{{9}}$";
public static readonly string PatternArticleNumber = @"^[A-Z0-9]{9}$";
public static readonly string PatternArticleNumber = $"^[A-Z0-9]{9}$";

但它都没有奏效。 这是我的实际验证规则:

this.RuleFor(article => article.Number)
            .NotEmpty()
            .WithLocalizedMessage(() => ValidationErrorMessages.IsRequired)
            .Length(ArticleConstant.LengthOfArticleNumber)
            .WithLocalizedMessage(() => ValidationErrorMessages.DefinedSized)
            .Matches(ArticleConstant.PatternArticleNumber)
            .WithLocalizedMessage(() => ValidationErrorMessages.MustNotContainAnySpecialCharacter);

当我直接在Matches函数中输入模式时,一切都像预期的一样。

有人可以向我解释这里发生了什么吗?

谢谢, 大卫

1 个答案:

答案 0 :(得分:0)

我现在使用

解决了这个问题
public const string PatternArticleNumber = "^[A-Z0-9]{9}$";

似乎static readonly正在做某事,因此验证失败了。