列表没有在c#中填充

时间:2014-10-19 17:02:03

标签: c# list model-view-controller runtime

我在MVC中有一个视图,并且在表单的重新生成中,我使用表单集合填充列表。 但列表没有正确填充,我相信我在列表中遗漏了一些东西。 请检查我的代码

    int noOfRows=Request.Form["rows"].ConvertToInt()};
    int noOfColmn=Request.Form["colmns"].ConvertToInt()};

    List<mymodel> list1= new List<mymodel>();


                  for (int roww = 1; roww < noOfRows; roww++)
                   {
                         list1=new List<mymodel>
                         {
                             new mymodel
    {
name=Request.Form["name-" + roww + ""].ConvertToInt() ,
rollno= Request.Form["rollno-" + roww + ""].ConvertToInt(),
                                 subjs=new List<mymodel>()}
                         };



     for (var colmn = 1; colmn < noOfColmn; colmn++)
                        {
                        var subjs= new List<mymodel> 
                        { new mymodel
                        {subjs=Request.Form["subj-" + roww + "-" + colmn + ""].ConvertToInt()}
                        };

                        }
                   }

                  ViewBag._list1 = list1;

1 个答案:

答案 0 :(得分:3)

您应该仅在for循环之外初始化list1变量,并在循环内部将元素添加到同一列表中。
您当前的代码会在每个循环中重新初始化此list1变量。内部循环对属性subjs执行相同操作,看起来是另一个List<mymodel>

我提出这个代码 当然,我无法测试它,所以请告诉我这个伪代码是否符合您的要求。

int noOfRows=Request.Form["rows"].ConvertToInt()};
int noOfColmn=Request.Form["colmns"].ConvertToInt()};

// Create the list1 just one time here.
List<mymodel> list1= new List<mymodel>();
for (int roww = 1; roww < noOfRows; roww++)
{
     // creates an instance of mymodel
     mymodel m = new mymodel
     {
         name=Request.Form["name-" + roww + ""].ConvertToInt() ,
         rollno= Request.Form["rollno-" + roww + ""].ConvertToInt(),

         // create the internal list of mymodel
         subjs=new List<mymodel>()}
     };

     // add the model m to the list1 
     list1.Add(m);

     // loop to create the internal models
     for (var colmn = 1; colmn < noOfColmn; colmn++)
     {
          mymodel m2 = new mymodel
          {
               subjs=Request.Form["subj-" + roww + "-" + colmn + ""].ConvertToInt()}
          };

          // add all the subsequent models to the sublist internal to the first model
          m.subjs.Add(m2);
     }
}
ViewBag._list1 = list1;