2013-03-04 71 views
2

我們有一個廣泛使用AJAX調用的ASP.NET MVC應用程序。如何確保JS匿名對象繼續映射到POCO ViewModels

這些AJAX調用發送數據到我們的控制器方法 - 這個控制器方法需要一個參數,它是一個簡單的POCO ViewModel類。

在我們的JavaScript中,我們創建了一個匿名對象,其屬性映射到ViewModel的屬性上,而MVC框架處理所有的路由,因此在控制器方法中我們得到了ViewModel的所有屬性。

一切都很好。

我們想要做的就是建立一個穩健的方法來確保JavaScript匿名類和ViewModel類保持同步 - 如果開發人員更改了一個,那麼他們更改了另一個。我們當然可以在這兩個文件中發表評論,說「改變一個,改變另一個」,以及嚴重毆打開發者的威脅,這些開發者不能保持這些同步,但即使在代碼審查中,這也是一個可能錯過了。

這將是很高興有某種自動化單元測試,可以檢查這一點,但我不知道如何實現這一點。

有什麼建議嗎?

在此先感謝

格里夫

回答

0

有一個JavaScript庫調用knockoutjs而正用於你想達到的目標。看起來好像你正在嘗試在ASP.NET MVC框架中使用MVVM模式。對於任何MVVM模式,保持viewmodel與視圖同步是一個常見問題。 KnockoutJS允許您創建直接綁定到視圖的javascript視圖模型客戶端。視圖更新時視圖模型會更新,並且視圖模型更新時更新視圖。 KnockoutJS使用一種稱爲觀察者模式的常見模式來實現這一點。 KnockoutJS還提供了一個映射插件,因此視圖模型可以接收JSON格式的服務器端視圖模型並更新自身,從而更新視圖。這是您正在尋找的功能。圖書館和地圖插件可以在他們的網站www.knockoutjs.com上找到。僅供參考......它是一個生產級庫。他們也有很好的文檔和例子。我希望這有幫助。不要重新發明輪子。