我正在尝试了解如何验证一组复选框。
我的模特:
[MinSelected(MinSelected = 1)]
public IList<CheckList> MealsServed { get; set; }
我希望能够创建一个自定义验证器,确保选中至少1个(或其他数字)复选框。如果没有,请显示ErrorMessage
。
#region Validators
public class MinSelectedAttribute : ValidationAttribute
{
public int MinSelected { get; set; }
// what do I need to do here?
}
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
您可以覆盖IsValid方法,并确保该集合至少包含MinSelected
个IsChecked
等于true
的项目(我想这CheckList
你的一类有一个IsChecked
属性):
public class MinSelectedAttribute : ValidationAttribute
{
public int MinSelected { get; set; }
public override bool IsValid(object value)
{
var instance = value as IList<CheckList>;
if (instance != null)
{
// make sure that you have at least MinSelected
// IsChecked values equal to true inside the IList<CheckList>
// collection for the model to be valid
return instance.Where(x => x.IsChecked).Count() >= MinSelected;
}
return base.IsValid(value);
}
}