C# ASP.NET-Foreach最后一个元素出现在整个列表中
这简直让我发疯。用C# ASP.NET-Foreach最后一个元素出现在整个列表中,c#,asp.net-mvc,list,foreach,dropdownbox,C#,Asp.net Mvc,List,Foreach,Dropdownbox,这简直让我发疯。用cont填充列表后,它会记录更改 所以每个值都是相同的。该值是上一条记录中的值 public ActionResult Index() { var cont = db.AspNetUsers.ToList(); var list = new List<SelectListItem> (); SelectListItem ctr = new SelectListItem(); foreach (var item in cont)
cont
填充列表后,它会记录更改
所以每个值都是相同的。该值是上一条记录中的值
public ActionResult Index()
{
var cont = db.AspNetUsers.ToList();
var list = new List<SelectListItem> ();
SelectListItem ctr = new SelectListItem();
foreach (var item in cont)
{
ctr.Text = item.Email;
ctr.Value = item.Email;
list.Add(ctr);
//last iteration everything is fine, every element of list holds
//another value
}
// debugger shows that all list elements have the same text and value
TempData["list"] = list;
return View();
}
public ActionResult Index()
{
var cont=db.AspNetUsers.ToList();
var list=新列表();
SelectListItem ctr=新建SelectListItem();
foreach(续中的var项目)
{
ctr.Text=item.Email;
ctr.Value=item.Email;
列表。添加(ctr);
//最后一次迭代一切正常,列表中的每个元素都有效
//另一个价值
}
//调试器显示所有列表元素具有相同的文本和值
TempData[“列表”]=列表;
返回视图();
}
谢谢 这是因为每次迭代都要添加和编辑相同的对象
ctr
。它是一种引用类型,因此每次执行ctr.*某个*
操作时,如果没有为ctr
初始化要引用的新对象,您将编辑相同的对象
foreach (var item in cont)
{
SelectListItem ctr = new SelectListItem();
ctr.Text = item.Email;
ctr.Value = item.Email;
list.Add(ctr);
}
Move
SelectListItem ctr=new SelectListItem()将>编码到列表中,这是因为每次迭代都要添加和编辑相同的对象ctr
。它是一种引用类型,因此每次执行ctr.*某个*
操作时,如果没有为ctr
初始化要引用的新对象,您将编辑相同的对象
foreach (var item in cont)
{
SelectListItem ctr = new SelectListItem();
ctr.Text = item.Email;
ctr.Value = item.Email;
list.Add(ctr);
}
MoveSelectListItem ctr=new SelectListItem()将>编码到列表中您需要在foreach循环中实例化SelectListItem ctr=new SelectListItem(),否则您将在列表中多次添加相同的对象,当您更改对象的值时,您将更改整个列表的值。您需要在foreach循环中实例化SelectListItem ctr=new SelectListItem(),否则您将在列表中多次添加相同的对象,当您更改对象的值时,您将更改整个列表的值。您需要为要添加的每个项目创建一个新的SelectListItem
。实际上,每次添加都使用相同的SelectListItem
,并且每次循环迭代都要更改属性。您需要为每个要添加的项目创建一个新的SelectListItem
。实际上,每次添加都使用相同的SelectListItem
,每次循环迭代都会更改属性。非常感谢!信息技术worked@AleksanderDudek-不客气:)非常感谢!信息技术worked@AleksanderDudek-不客气:)