從現在起我已經使用優秀的FluentValidation 庫來驗證我的模型類。在web應用程序中,我使用它與jquery.validate插件一起執行客戶端驗證。 一個缺點是,許多驗證邏輯在客戶端重複,不再集中在一個地方。使用數據註釋自定義模型驗證依賴屬性
因此,我正在尋找替代品。有many示例輸出there顯示使用數據註釋來執行模型驗證。它看起來很有希望。 我找不到的一件事是如何驗證依賴於另一個屬性值的屬性。
讓我們舉個例子以下模型:
public class Event
{
[Required]
public DateTime? StartDate { get; set; }
[Required]
public DateTime? EndDate { get; set; }
}
我想確保EndDate
比StartDate
更大。我可以編寫一個自定義 驗證屬性,以延伸ValidationAttribute以執行自定義驗證邏輯。不幸的是我無法找到一個方法來獲得 模型實例:
public class CustomValidationAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
// value represents the property value on which this attribute is applied
// but how to obtain the object instance to which this property belongs?
return true;
}
}
我發現CustomValidationAttribute似乎做的工作,因爲它包含正在驗證的對象實例此ValidationContext
屬性。不幸的是,該屬性僅在.NET 4.0中添加。所以我的問題是:我可以在.NET 3.5 SP1中實現相同的功能嗎?
UPDATE:
似乎FluentValidation already supports客戶端驗證和元數據在ASP.NET MVC 2
不過這將是很好的瞭解不過,如果數據標註可用於驗證有關的性質。
有沒有人想過在相同的類/模型下一起獲取dataannotations和FluentValidation(驗證)的方法?如果這樣會很棒,我有一個關於這個與FV作者Jeremy討論的話題,你可以在這裏查看:http://fluentvalidation.codeplex.com/Thread/View.aspx?ThreadId=212371 – 2010-05-14 14:27:21