2011-12-06 103 views
0

我有一個包含填充對象和rx對象的視圖模型。在下面顯示的代碼上方,我有一個填充列表和一個rx列表。這些正在填寫正確。MVC3 For Loop Logic涉及視圖模型

下面,我將viewmodel的一個實例中的fill和rx對象設置爲每個列表的第一個元素中的內容。然後我將viewmodel的實例添加到MyViewModel的列表中,然後重新啓動循環。但是,在重新啓動循環之前,我刪除了填充列表和rxs列表中的第一個元素,以便在下一個循環中我的viewmodel對象將會不同。

問題是,當我調試時,在循環的每次迭代中,在MyViewModels列表中,每個viewmodel的對象被設置爲等於來自填充列表和rx列表的新值。

這一定是那麼簡單,我可以俯瞰。提前致謝。

for (int i = 0; i < f; i++) 
       { 
         _myViewModel.fill = FillList.ElementAt(0); 
         _myViewModel.rx = RxList.ElementAt(0); 

         MyList.Add(_myViewModel); 

         FillList.RemoveAt(0); 
         RxList.RemoveAt(0); 
       } 


        return View(MyList); 

回答

2

對我來說,好像你正在創建for循環_myViewModel外的,所以_myViewModel是一個對象。

您不是將一個克隆或_myViewModel的東西添加到MyList列表,而是對其的引用。因此,下一次循環通過並更改_myViewModel列表中已有的項目也會發生變化。

您需要在循環內創建一個新的myViewModel對象

+0

你是完全正確的。這是問題所在。謝謝。 – HendPro12

0

你有沒有試過。

for(int i=0; i<f; i++) 
{  
    _myVieModel = new MyVieModel(); 
    _myViewModel.fill = FillList[i] 
    _myViewModel.rx = RxList[i] 
    MyList.Add(_myViewModel); 
} 
+0

剛剛做過。不幸的是,結果相同。有八個視圖模型添加到視圖模型列表中,但所有視圖模型都被覆蓋以包含相同的值。 – HendPro12

+0

聽起來像我想你的想法_myViewModel = new MyViewModel()。你介意發佈你的當前代碼和視圖模型代碼嗎?也許你想要一個局部視圖,而不是viewModel? – jwood

+0

你的回答也讓我看到了解決方案。謝謝。 – HendPro12