xValとここでDataAnnotationsValidationRunner
説明する標準を使用して、ドメインオブジェクトから検証エラーを収集し、ASP.NETMVCでモデルを表示します。カスタムDataAnnotationsを使用して、2つのプロパティが一致しない場合に検証ランナーが識別できるようにする方法が必要です。
今、私はランナーの外でそれをすることを余儀なくされています、このように:
if (!(model.FieldOne == model.FieldTwo))
errors.Add(new ErrorInfo("FieldTwo", "FieldOne must match FieldTwo", model.FieldTwo));
私の質問は次のとおりです:これはプロパティレベルの検証属性を使用して行うことができますか、それともクラスレベルの属性を使用するように強制されますか(この場合、ランナーを変更する必要があります...そして私のフォローアップの質問はどのように最適であるかその場合、それらを取得します)。
ありがとう!
更新: 私はついに、選択した回答に提案を実装するためのオブジェクトクエリを作成する方法を理解しました。興味があれば、このクエリの結果を標準の検証ランナーの結果と連結します。TypeIdをconfirmフィールドプロパティに変更したことに注意してください。
var classErrorQuery =
from attribute in
instance.GetType().GetCustomAttributes(typeof (ValidationAttribute), false).Cast
<ValidationAttribute>()
where !attribute.IsValid(instance)
select new ErrorInfo(attribute.TypeId.ToString(), attribute.FormatErrorMessage(string.Empty), instance);