我在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是非英国居民。
我是如何实现这一目标的?有没有办法在运行时修改正则表达式值? 如果您需要更多信息,请告诉我,我会更新问题。
答案 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
}
}