如何应用不同的正则表达式来查看模型属性?

时间:2017-02-06 14:32:07

标签: c# asp.net-mvc viewmodel data-annotations

我在asp.net mvc app中有以下视图模型。

[Required]
public string Name { get; set; }
[Required]
public int Age { get; set; }
public DateTime DateOfBirth { get; set; }
public Address CurrentAddress { get; set; }

我的地址对象包含邮政编码属性,该属性具有RegularExpession属性以验证英国邮政编码。

public class Address
{
   ...
   [RegularExpression(@"^[A-Z]{1,2}[0-9][0-9A-Z]? [0-9][A-Z]{2}$")]
   public string PostCode { get; set; }
   ...
}

我想扩展当前功能以使用不同的正则表达式验证PostCode,例如person是非英国居民。

我是如何实现这一目标的?有没有办法在运行时修改正则表达式值? 如果您需要更多信息,请告诉我,我会更新问题。

1 个答案:

答案 0 :(得分:1)

您可以创建自己的Person dependand属性:

public class MyTestAttribute : ValidationAttribute
{
    private readonly Regex _regex1;
    private readonly Regex _regex2;

    public MyTestAttribute(string regex1, string regex2)
    {
        _regex1 = new Regex(regex1);
        _regex2 = new Regex(regex2);
    }

    public override bool Match(object obj)
    {
        var input = (string) obj;
        if (IsUk())
        {
            return _regex1.IsMatch(input);
        }
        return _regex2.IsMatch(input);
    }

    private bool IsUk()
    {
        //is person in UK
    }
}