2011-02-15 46 views
0

我試圖學習mvc時遇到了一個障礙。我正在採取mvvm方法,因爲我認爲這適合我。綁定viewmodels並插入獲取數據到控制器

如果您想到允許客戶訂購產品的網站。

我的數據庫中包含3個表

 
dbo.Product 
ProductID 
ProductName 

db.Order 
OrderID 
OrderDate 
ProductOrderID 

db.OrderProducts 
OrderID 
ProductID 
QuantityOrdered 

我用的是實體framwork。我不是創造2周的ViewModels

OrderViewModel,看起來像

public class OrderViewModel 
{  
    public Order Order { get; set; } 
    public List<ProductOrderViewModel> AddedProducts { get; set; } 
} 

,比第二個這樣的事情。

public class ProductOrderViewModel  
{   
public int OrderID { get; set; 
public List<Product> Products { get; set; }   
public int QuantityOrdered { get; set; } 
} 

我想使用jQuery做盡可能多的客戶方的負載儘可能我想刪除儘可能多地調用回服務器儘可能所以我想

  1. 創建一個視圖,其強烈鍵入到OrderViewModel可以稱之爲CreateOrder
  2. 使用下拉列表創建基於我的ProductOrderViewModel的局部視圖,以綁定可用的產品名和產品ID 3.然後將局部視圖加載到視圖中。
  3. 綁定到的ProductID我CreateOrder視圖中創建2個隱藏字段和QuantityOrdered
  4. 使用jQuery通過從所選擇的產品下拉值和數量文本框成使用按鈕分隔每個項目ID和數量用一個簡單的「隱藏的字段,「在此之後,我添加清楚這些值準備添加下一個項目。

然後我用我的控制器自動映射器來映射視圖模型,它允許我將訂單插入我的實體框架。

這是做事情的正常方式還是我完全偏離軌道?

回答

0

我會採取與jfar相反的方法,因爲我不介意使用Javascript。檢出Knockout.JS。它是瀏覽器中的MVVM(silverlight/wpf樣式綁定)實現。 shopping cart example應該給你一個很好的起點。我傾向於將這種方法用於任何涉及列表操作或計算字段的客戶端編輯。它也適用於用戶需要一次編輯多個項目的情況。

如果您不採用這種方法,我建議添加到您的解決方案。使用JQuery的.data() API或全局變量*將值作爲JSON傳遞,而不是逗號分隔值。維護人員想要看到的最後一件事情是代碼中的模糊數組或代碼.split(',')。我正在處理看起來像這樣的代碼,它不漂亮。

*你可以掛命名空間關閉jQuery對象:

$.my_stuff = $.my_stuff || {}; 
$.my_stuff.foo = { id : 1, quantity: 42 }; 

編輯:這裏是how to use Knockout with MVC。我認爲JSON模型綁定在MVC3中是支持開箱即用的,但我仍然不能100%確定,因爲我仍然使用2.0。

0

1聽起來更直接,更少的JavaScript代碼。

我喜歡jQuery和JavaScript,但儘可能少地寫。與VS的javascript編輯器和Firebug相比,C#和VisualStudio是非常強大的開發工具。

此外,automapper最好用於從Domain/Model/BusinessObject(不管我們今天稱爲他們;))而不是其他方向。


將它們存儲在隱藏的表單字段中。

+0

嗨jfar,對不起,我編輯了我的文章。嘗試使它有一定道理。我只是不確定應該如何或在哪裏存儲ProductID和QuantityOrdered。 – 2011-02-15 04:27:07

+0

好吧,那麼如何構建jquery中的Products和QuantityOrdered列表以傳遞迴控制器? – 2011-02-15 07:03:03

相關問題