2011-10-17 26 views
1

有很多關於使用MVVM模式的ASP .NET MVC的文章。例如,它是http://blogs.microsoft.co.il/blogs/helpercoil/archive/2010/08/28/asp-net-mvc-and-the-mvvm-pattern.aspx將MVVM應用於ASP.NET MVC。如何做屬性映射?

對我來說只有一個問題。我們有一個Model的很多ViewModel。如何使用viewModel對象自動填充模型屬性?如何進行自動屬性映射?

我使用實體框架。

例如,我有以下特性模型試驗:

  • ID
  • 標題
  • ID用戶
  • idCompany

我做的ViewModel我任務。該視圖模型(TestUserViewModel)使用與下列性的判定簡單的用戶: - ID - 姓名 - 標題

例如,用戶編輯現有的測試。結果,我們有一個類型爲TestUserViewModel的對象。我想要:

  • 同步模型對象和ViewModel。
  • 保存idCompany的默認值,idUser - 用於從當前ViewModel中排除的屬性。
  • 使用一些自動的東西 - 它可能是像ApplyCurrentValues。我真的不想寫了很多下面的代碼:

    modelObj.name=viewModelObj.name; 
    modelObj.title=viewModelObj.title; 
    

使用System.Reflexion這個樣子不好,太。

那麼,該怎麼做呢?

+2

對於ASP.NET MVC,MVVM並不是一個好的模式,其中MVC是一種更好的模式。 –

+2

您是否閱讀過該博客文章?這是一場悲劇。在網頁上的CSS中,有一半的代碼樣本是行編號的,有一半不是......我不會從那些不會花5分鐘時間清理工作的人那裏得到任何建議。 – Will

+0

是的,那篇文章對於閱讀不好 –

回答

2

如果你不想從一個對象編寫大量的代碼映射到另一個你可能要考慮的映射工具,如AutoMapper http://automapper.org/

話雖如此,作爲@Darin季米特洛夫指出的那樣,你應該也檢查你的架構。如果你在做ASP.NET MVC,你應該更熟悉MVC而不是MVVM。當你閱讀更多關於如何使用MVC的內容時,你將開始看到使用「viewModels」。請記住,MVC中的這些「viewModels」與「MVVM」中的「VM」無關。

+0

是的,據我瞭解,這只是術語問題。它在這裏命名爲MVVM - http://blogs.microsoft.co.il/blogs/helpercoil/archive/2010/08/28/asp-net-mvc-and-the-mvvm-pattern.aspx。也許,這是不正確的名字。 –

+0

事實上,我認爲你引用的博文是MVVM和ViewModels概念錯誤。其中一條評論(Charles Vallance的評論)指出了這一點。該博客文章的作者似乎以迂迴的方式承認這一點,但從未更新原始博客文章。好吧... –