我的视图模型中有一些内容,如
[RegularExpression(...)]
public string PenguinGenome
{
get;set;
}
public int PenguinSpecies
{
get; set;
}
有没有办法根据PenguinSpecies制作动态?
即:
[RegularExpression(GetExpression(PenguinSpeciesId))]
public string PenguinGenome
{
get;set;
}
public int PenguinSpeciesId
{
get; set;
}
public string GetExpression(int speciesId)
{
if (.....)
return "[some regex]";
}
这不起作用,因为PenguinSpeciesId在上下文中不存在。什么是最好的解决方法?
答案 0 :(得分:1)
This is an article,但ASP.NET MVC3的过程非常接近。
基本上,您需要创建自己的自定义验证器,以查看对象,然后确定正确的验证方式。
答案 1 :(得分:0)
RegularExpression验证器并不是你想要的。您想根据另一个模型属性的值验证PenguinGenome。换句话说 - 你不想在这里进行属性验证,而是模型验证。
你可以使用模型感知验证属性,但我个人不会 - 因为它“隐藏”依赖(没有人能从模型类看出,PenguinGenome验证取决于PenguinSpeciesId)。我宁愿在这里使用IValidatableObject。