私はWebページフォームからデータを受け取るためのデータ転送オブジェクトを作成したASP.NET MVC 2プロジェクトを持っています。フォームには2つのグループのチェックボックスがあります。オブジェクトを検証して、各グループのチェックボックスの少なくとも1つがチェックされていることを確認します。少なくとも1つのチェックボックスがチェックされていることを確認するためのASP.NET MVCバリデーター
ユーザーがクライアント側の検証をハックすることができないように、サーバー側で検証を行っています。 (後でjQueryでクライアント側の検証を追加するのは簡単です。)
私の理解では、データ転送オブジェクトクラス用に独自のカスタムValidationAttributeを作成する必要がありますが、作成方法と使い方を理解できませんそれらのうちの少なくとも1つが真であることを確認するためにチェックボックスのプロパティの任意のリストを受け入れることができます。私は、このような属性を呼び出す必要があります推測しています:
[AtLeastOneCheckbox("set1check1", "set1check2", "set1check3",
ErrorMessage = "You must check at least one checkbox in set 1.")]
[AtLeastOneCheckbox("set2check1", "set2check2", "set2check3", "set2check4", "set2check5",
ErrorMessage = "You must check at least one checkbox in set 2.")]
public class MyFormDTO
{
...
}
AtLeastOneCheckboxAttributeの実装がどのように見えますか?
または、私はこの種の検証を行うべき方法がありますか?
をあなたの検証を行うことができますマイクロソフトMVCはすべてのために、この「属性」検証システムに私を推進している理由は、私は思ったんだけど。 RequiredAttributeとStringLengthAttributeで行われたチェックと他の検証属性を使用して各プロパティに配置した後、IsValid()メソッドをオブジェクトに追加して、このオブジェクトのプロパティに関する他のチェックを行って、 ModelStateに私のIsValid()メソッドの結果を反映させる方法はありますか? –