我在我的项目中使用.NET 4 MVC 2。我基本上有两个类,我用它来验证。 A类是我的(主)模型,B类是A类可能具有的复合属性。代码如下所示:
[Bind(Exclude = "A_ID")] public class A_Validation { [Required(ErrorMessage = "something is missing")] public string title { get; set; } // some more attributes ... public B b { get; set; } }
基于A类的所有验证都运行良好。但现在我想验证复合属性B,如下所示。
[Bind(Exclude = "B_ID")] public class B_Validation { [Required(ErrorMessage = "missing")] [Range(1, 210, ErrorMessage = "range between 1 and 210")] public int first { get; set; } [Required(ErrorMessage = "missing")] [Range(1, 210, ErrorMessage = "range between 1 and 210")] public int second { get; set; } [Required(ErrorMessage = "missing")] [Range(1, 210, ErrorMessage = "range between 1 and 210")] public int third { get; set; } }
我能够检查B的三个属性第一个,第二个和第三个的范围。 我还想要检查所有三个属性的总和 首先,第二和第三 低于某个阈值。
任何想法如何进行?
我认为ViewModels可能有所帮助,但我没有使用它们的经验。
答案 0 :(得分:0)
您是否尝试过编写自定义验证属性:
public class SumBelowAttribute : ValidationAttribute
{
private readonly int _max;
public SumBelowAttribute(int max)
{
_max = max;
}
public override bool IsValid(object value)
{
var b = value as B_Validation;
if (b != null)
{
return b.first + b.second + b.third < _max;
}
return base.IsValid(value);
}
}
然后使用以下属性装饰B
属性:
[SumBelow(123)]
public B b { get; set; }