0
我正在嘗試使用數據註釋進行自定義驗證。 試圖讓屬性,我都遵循這樣一個問題: How to create Custom Data Annotation Validators未驗證自定義數據註釋屬性
我的屬性看起來像這樣
internal class ExcludeDefaultAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return false;
}
}
和驗證被稱爲:
internal static class TypeValidator
{
static public bool Validate(object item)
{
List<ValidationResult> results = new List<ValidationResult>();
ValidationContext context = new ValidationContext(item);
if (Validator.TryValidateObject(item, context, results))
{
return true;
}
else
{
string message = string.Format("Error validating item");
throw new TypeInvalidException(results, message);
}
}
}
所以,這裏是問題。目前,我的自定義驗證應始終返回false。所以驗證應該總是失敗。但是,每當我嘗試驗證在字段上具有此屬性的對象時,它都會通過驗證,這表明我的自定義驗證屬性未被評估。我不想在驗證中做出任何實際的邏輯,直到我知道它實際上正在運行。 我錯過了什麼嗎?我的所有研究都表示我只需要從ValidationAttribute繼承,但它不起作用。
文檔說,它評估每個ValidationAttribute,所以不應該它正在檢查我的自定義嗎?當它表示它沒有遞歸驗證時,我將它表示賦予給屬性的對象未經驗證。 –
想通了。 TryValidateObject有一個可選的第四個參數。如果設置爲true,則會對所有屬性(包括我的自定義屬性)進行驗證。 –