私はobejectについて完全な検証を行い、それを処理する最良の方法を見つけようとしています。私はそれを持続する前にクラスを検証するためにdataannotationとXVALを使用したいが、私は複数のプロパティを必要とする複雑な検証を持ってxVal、クラス全体のDataAnnotations
public class LetterResponse {
public Guid Id {get;set;}
public bool SendBlankCart {get;set;}
public string ToName {get;set;}
public string ToAddress {get;set;}
}
:
は、以下のクラスを考えます。
疑似:私がするパラメータを期待してい
public class LetterResponseValidator : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value.GetType() == typeof(LetterResponse))
{
var letterResponse = (letterResponse) value;
if (letterResponse.SendBlankCard)
{
return true;
} else
{
if (string.IsNullOrEmpty(letterResponse.FromDisplayName) || string.IsNullOrEmpty(letterResponse.ToAddress1))
{
return false;
}
return true;
}
}
return false;
}
}
:
[LetterResponseValidator]
public class LetterResponse {
public Guid Id {get;set;}
public bool SendBlankCart {get;set;}
public string ToName {get;set;}
public string ToAddress {get;set;}
}
をし、このような検証ルールを持っている:
if SendBlankCart {
- no validation on ToName, ToAddress
} else {
ToName - required.
ToAddress - required.
}
は、私はこのような注釈を付けたいですLetterResponseクラスのインスタンスですが、検証ランナーには決してコールされません。
誰もこれを処理する方法を知っていますか?
おかげで、
ハル
Yep - 私のDataAnnotationランナーメソッドは、クラスレベルの属性ではなく、プロパティをチェックしていました。私はSystem.ComponentModel.DataAnnotationsで働くつもりですDataAnnotationsModelBinderを見つけることができますおかげで、ハル – Hal
あなたは知っていますV 3.5 – Omu
、別に私は上記のリンク先のブログの記事で説明したバグから.NETバージョン3.5で動作し、通常の1 。この資料では、バグを修正する方法も示しています。 –