0
我正在處理一個需要同一模型的不同驗證集的項目,我們正在試圖找到處理它的最佳解決方案。如何在MVC3中處理服務層驗證
一個簡單的例子可以使用我們的客戶DTO:
public class Customer
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required] // Only required on some views
public string Title { get; set; }
}
在我們的第一個觀點,所有字段是必需的,因爲他們在使用DTO正在DataAnnotations所示。
在我們的第二個視圖中,FirstName和LastName可能是必需的,但Title是可選的,甚至可能不會在視圖中表示。
複雜化出現了,我們希望在我們的服務層中存在驗證規則(以便我們可以在稍後利用相同驗證提供API),它可以訪問數據註釋並對其進行驗證,如果他們不驗證,則向UI回報。
到目前爲止,中獎的方法是:
- 每個視圖有一個專門的視圖模型,其中DataAnnotations上存在。
- 然後viewmodel使用類似Automapper的方式映射我們的域對象。
- 然後,將域對象傳遞給存儲庫和服務以對其執行操作。
這也意味着:
- 確認不會發生在服務層,由於當時的對象了那裏,他們將域對象,而不是的ViewModels。
有沒有更好的辦法,我們應該爲企業應用程序處理?我們尚未找到解決方案。