【问题标题】:MVC3 For Loop Logic involving a ViewModel涉及 ViewModel 的 MVC3 For 循环逻辑
【发布时间】:2011-12-06 15:39:10
【问题描述】:

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

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

问题是,当我调试时,在循环的每次迭代中,在 MyViewModels 列表中,每个视图模型的对象都被设置为等于填充列表和 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);

【问题讨论】:

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


    【解决方案1】:

    在我看来,您似乎是在 for 循环之外创建 _myViewModel,所以 _myViewModel 是一个对象。

    您不是在MyList 列表中添加克隆或_myViewModel 的东西,而是对它的引用。因此,下次循环通过并更改 _myViewModel 时,列表中已经存在的项目也会更改。

    您需要在循环内创建一个新的 myViewModel 对象

    【讨论】:

      【解决方案2】:

      你试过了吗?

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

      【讨论】:

      • 刚刚做了。不幸的是,同样的结果。视图模型列表中添加了八个视图模型,但所有视图模型都被覆盖以包含相同的值。
      • 对我来说听起来就像您错过了 _myViewModel = new MyViewModel() 行。您介意发布您当前的代码和视图模型代码吗?也许你想要一个局部视图而不是一个 viewModel ???
      • 您的回答也让我找到了解决方案。谢谢。
      猜你喜欢
      • 2014-10-03
      • 1970-01-01
      • 2022-11-04
      • 2018-01-10
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多