2011-01-11 38 views
0

チェックボックスのグループをどのように検証できるかを理解しようとしています。チェックボックスグループのカスタム検証

マイモデル:

[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

あなたはIsValidメソッドをオーバーライドして、コレクションがtrueに等しいIsChecked(私はあなたのこのCheckListクラスはIsChecked性質を持っていると仮定)と少なくともMinSelectedの項目が含まれていることを確認できます。

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); 
    } 
}