1

DataAnnotations驗證發生在默認的模型聯編程序中,我見過的大多數示例都使用控制器中的Model.IsValid來驗證模型是否有效。由於我的控制器操作調用業務層的方法,我想驗證實體有:MVC驗證和業務層

  1. 我必須明確地關閉 模型綁定驗證?
  2. 如何驗證 業務層中的實體。換句話說,如果 對象是 對象,我會觸發驗證嗎?
  3. 此外,我正在使用查看模型。我是否在 視圖模型中添加驗證屬性?如果是這樣,由於查看模型 與UI相關聯,那麼在業務層驗證 ?

回答

3

我要開始回答你的問題#3:是的,當使用視圖模型時,在視圖模型的屬性上添加Data Annotation驗證屬性。正如您所指出的那樣,視圖模型與UI綁定在一起,因此它們具有表示方面的問題,驗證僅限於UI輸入驗證。您在此應用的驗證屬性將由框架自動調用,並且您可以在控制器中檢查ModelState.IsValid(您也指出了這一點)。

關於驗證業務層中的對象,有許多方法可以做到這一點。例如,您也可以在業務層域模型實體上使用數據註釋。您也可以使用其他框架,如企業庫驗證應用程序塊,Fluent Validation等。但在這種情況下,您可能會進行明確的調用以驗證您的域對象(並且每個框架都有其自己的機制所以)。我假設您的視圖模型和領域模型(可能與類似AutoMapper的東西)之間的映射給出了上面的描述。

說了這麼多,關於您的問題#1,我不會關閉模型綁定器驗證。讓性能在視圖模型上進行驗證是正常的。將您的視圖模型映射到您的領域模型類。然後隨意爲您的域模型執行額外的業務對象驗證層。你甚至可能不會在MVC項目中進行這種驗證 - 這可能被封裝在一個業務層中,而你的應用中還有其他地方。