对复选框组进行自定义验证

时间:2011-01-11 18:49:37

标签: c# asp.net-mvc-2

我正在尝试了解如何验证一组复选框。

我的模特:

[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?
}

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您可以覆盖IsValid方法,并确保该集合至少包含MinSelectedIsChecked等于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);
    }
}