2012-02-22 39 views
3

所以我一直在.NET中使用MVC的方式是爲每個視圖創建ViewModels。MVC3和KnockoutJS DRYly

現在,使用Knockout,我會創建我的ViewModels而不是C#類的JavaScript?然後讓我的主模型(在這種情況下,EF生成模型)作爲我唯一的C#模型類?或者我仍然會去創建一個C#ViewModel類以及我的Knockout ViewModel?

我想盡快設置這個項目,但我不確定在這種情況下的最佳實踐。

回答

2

您可以爲C#服務器端創建視圖模型(VM),並且仍然將它們用於ASP.NET MVC視圖。然後爲客戶端JavaScript視圖創建VM。但是我最喜歡的方式是使用MVC Views作爲頁面的基礎,並讓Model成爲JavaScript模型的基礎。唯一的虛擬機會成爲JavaScript虛擬機,因爲大部分演示文稿都是在客戶端完成的。換句話說,在MVC中做更靜態的管道工作,然後做動態交互客戶端。

如果您正在構建主要使用客戶端JS庫(如KO),那麼除非您有充足的理由,否則我不會從MVC端的VM開始。

如果您有任何具體問題,我很樂意爲您提供幫助。

0

您應該將Knockout視圖模型基於來自服務器的視圖數據,以便至少使用來自服務器的數據進行初始化,而不必單獨發出請求以獲取該數據。

您可以選擇使用mapping plugin將視圖數據映射到您的視圖模型。

1
  1. 像往常一樣創建視圖模型。
  2. 創建一個HTML助手,它可以從中生成一個KO視圖模型。
+0

你能詳細說明點2嗎? – Aidos 2012-04-14 07:12:41