我在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;
答案 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;