如何使用IValidatableObject?我明白IValidatableObject用于驗證對象的方式,讓我們彼此比較屬性。我仍然希望有一些屬性來驗證單個屬性,但是在某些情況下,我想忽略某些屬性上的失敗。我是否試圖在下面的情況下不正確地使用它?如果不是,我如何實現(xiàn)這一點?public class ValidateMe : IValidatableObject{
[Required]
public bool Enable { get; set; }
[Range(1, 5)]
public int Prop1 { get; set; }
[Range(1, 5)]
public int Prop2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!this.Enable)
{
/* Return valid result here.
* I don't care if Prop1 and Prop2 are out of range
* if the whole object is not "enabled"
*/
}
else
{
/* Check if Prop1 and Prop2 meet their range requirements here
* and return accordingly.
*/
}
}}
3 回答

慕虎7371278
TA貢獻1802條經(jīng)驗 獲得超4個贊
在驗證對象時,在Validator.ValidateObject中應(yīng)用以下進程:
- 驗證屬性級屬性
如果任何驗證器無效,則中止返回失敗的驗證。
- 驗證對象級別的屬性。
如果任何驗證器無效,則中止返回失敗的驗證。
- 如果桌面框架上的對象實現(xiàn)了IValidatableObject,那么調(diào)用它的驗證方法并返回任何失敗
這表明,您要做的工作不會成功,因為驗證將在步驟2處中止。您可以嘗試創(chuàng)建從內(nèi)置屬性繼承的屬性,并在執(zhí)行正常驗證之前(通過接口)專門檢查是否存在啟用的屬性?;蛘撸梢詫⒂糜隍炞C實體的所有邏輯放在Validate
方法。
- 3 回答
- 0 關(guān)注
- 866 瀏覽
添加回答
舉報
0/150
提交
取消