Asp.net-Mvc
使用數據註釋的 MVC 驗證 - 模型類或視圖模型類?
將數據驗證註釋放在模型或視圖模型中是最佳實踐嗎?一種方法相對於另一種方法的優點/缺點是什麼?
很想知道每個人都在哪裡進行驗證,我目前正在模型項目中進行驗證。但是我看到一些人說這不是最佳實踐。
就最佳實踐而言,我會說:兩者都不是。驗證應該是分開的。FluentValidation等框架允許您將驗證邏輯與模型完全分離。但是要回答您的問題,我會將驗證放入視圖模型中,因為這些是您將控制器操作綁定到的類。您還可以有多個視圖模型,它們綁定到同一個模型但具有不同的驗證規則。
將您的註釋放在您的視圖模型中。
每個 DataModel 可以有多個 ViewModel,例如 DisplayModel、EditModel、ListModel .. 所有這些都可能需要不同的註釋。
通常認為最好不要將 DataModel 直接暴露給視圖,尤其是在“POST”/Edit 場景中。
我建議閱讀 Brad Wilson 的精彩概述:http ://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html
這些文章主要介紹了 MVC2 中 Dislpay 和 Edit 模板的使用,但清楚地說明了使用 ViewModel 模式的優勢