在ASP.NET MVC3中,有没有办法使[RegularExpression]标签动态化?

时间:2011-10-18 15:10:53

标签: asp.net-mvc asp.net-mvc-3

我的视图模型中有一些内容,如

[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在上下文中不存在。什么是最好的解决方法?

2 个答案:

答案 0 :(得分:1)

ASP.NET MVC2的

This is an article,但ASP.NET MVC3的过程非常接近。

基本上,您需要创建自己的自定义验证器,以查看对象,然后确定正确的验证方式。

答案 1 :(得分:0)

RegularExpression验证器并不是你想要的。您想根据另一个模型属性的值验证PenguinGenome。换句话说 - 你不想在这里进行属性验证,而是模型验证。

你可以使用模型感知验证属性,但我个人不会 - 因为它“隐藏”依赖(没有人能从模型类看出,PenguinGenome验证取决于PenguinSpeciesId)。我宁愿在这里使用IValidatableObject。