2

我目前正在研究我的第一個MVC項目,這不過是我自己學習目的的榮耀博客。我開始採用數據庫優先的方法,因爲我不知道代碼,即使在那時也是第一個。這讓我對我應該如何處理驗證感到困惑。MVC3好友類,ViewModels和驗證

我在數據庫中有一個Articles表,它有一個對應的Article類,它已經由EF爲我生成。我還有一個ArticleViewModel類,它具有Article中每個屬性的匹配屬性。雖然我有簡單的CRUD操作,但他們目前正在使用強類型Article模型而不是ArticleViewModel,並且沒有數據驗證發生。

今天做了一些研究來評估我的選擇後,我發現followingquestionsthis博客文章。所以看起來好像我可以將MetadataType屬性應用於EF生成的類並在那裏進行驗證,但是我一直在閱讀包含驗證的好友類是不好的做法。我不知道這是爲什麼,但如果是這樣的話,這是否意味着我應該忽略好友班並做類似下面的事情?

[MetadataType(typeof(ArticleViewModel))] 
public partial class Article 
{ 
    public Article(ArticleViewModel avm) 
    { 
     // Copy the properties from the ArticleViewModel into an Article. 
    } 
} 

然後根據需要應用DataAnnotations到ArticleViewModel和更新我的控制器/視圖使用ArticleViewModel

在此先感謝您的任何意見。 :)

回答

3

是的,我最近了解到這種方法!只要你不介意附加的代碼,這是一個好習慣。有關代碼示例的更多詳細信息和可接受的答案,請參見Where do you put your validation in asp.net mvc 3?

+0

正確,這是要走的路 – mare

+0

謝謝你們倆! –

+0

如果將使用外鍵的複雜表作爲視圖中的模型並將該視圖提交給處理使用,是否會有任何性能影響?通常我只創建用於視圖的模型,然後將該模型發送到/從我的數據層重構並根據需要進行轉換。我最近了解到這一點,但經過檢查,該模型對LINQ2SQL和所有鑽取的表格都持有一致的看法......?一千分鐘的頁面瀏覽量會更糟糕地使用這種做法嗎? – ppumkin