3
我對obeject有一個完整的驗證,並試圖找出處理它的最佳方法。整個班級的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;}
}
我想用一個dataannotation和XVAL爲了驗證之前,我堅持它的類,但我有複雜的驗證,需要不止一個屬性。
僞:
if SendBlankCart {
- no validation on ToName, ToAddress
} else {
ToName - required.
ToAddress - required.
}
我想詮釋這樣的:
[LetterResponseValidator]
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;
}
}
我期待的參數是我的LetterResponse類的實例,但它永遠不會在我的驗證運行器上調用?
有沒有人知道一種方法來處理這個問題?
感謝,
哈爾
是的 - 事實證明我的DataAnnotation runner方法只是檢查屬性,而不是類級別的屬性。謝謝,哈爾 – Hal
你知道我在哪裏可以找到一個DataAnnotationsModelBinder,它可以使用System.ComponentModel.DataAnnotations v 3.5 – Omu
除了我在上面鏈接的博客文章中描述的錯誤。文章還展示瞭如何修復這個bug。 –