涉及ViewModel的MVC3 for Loop Logic

时间:2011-12-06 15:39:10

标签: asp.net-mvc-3 for-loop viewmodel

我有一个包含填充对象和rx对象的视图模型。在下面显示的代码上方,我有一个填充列表和一个rx列表。这些都正确填写。

下面,我将viewmodel实例中的fill和rx对象设置为每个列表的第一个元素。然后我将我的viewmodel实例添加到List of MyViewModels并重新启动循环。但是,在重新启动循环之前,我删除了填充列表中的第一个元素和rxs列表,以便在下一个循环中我的viewmodel对象将是不同的。

问题是,当我调试时,在循环的每次迭代中,在List of 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 个答案:

答案 0 :(得分:2)

对我来说,好像你在for循环之外创建了_myViewModel,所以_myViewModel是一个对象。

您不是在_myViewModel列表中添加克隆或MyList的内容,而是对其进行引用。因此,下次循环通过并更改_myViewModel时,列表中已有的项也会更改。

您需要在循环

中创建一个新的myViewModel对象

答案 1 :(得分:0)

你试过吗。

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