Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在foreach、ASP.NET MVC中绑定DropDownListFor_C#_Asp.net Mvc_Html.dropdownlistfor - Fatal编程技术网

C# 在foreach、ASP.NET MVC中绑定DropDownListFor

C# 在foreach、ASP.NET MVC中绑定DropDownListFor,c#,asp.net-mvc,html.dropdownlistfor,C#,Asp.net Mvc,Html.dropdownlistfor,这是我的密码: 视图模型 public class FooViewModel{ public Guid BarId { set;get } } 视图: @model IEnumerable<FooViewModel> @foreach (var c in Model) { <div> @Html.DropDownListFor(o => c.BarId , (List<SelectListItem>)ViewBag.Bar

这是我的密码:

视图模型

public class FooViewModel{
   public Guid BarId { set;get }
}
视图:

@model IEnumerable<FooViewModel>
@foreach (var c in Model)
{
    <div>
        @Html.DropDownListFor(o => c.BarId , (List<SelectListItem>)ViewBag.BarCollection)
    </div>
}
@model IEnumerable
@foreach(模型中的var c)
{
@DropDownListFor(o=>c.BarId,(List)ViewBag.BarCollection)
}

问题是
DropDownListFor
完全创建选项,但绑定不起作用。

不能使用
foreach
循环为集合中的项生成控件。如果检查html,您将看到有重复的
name
属性而没有索引器(还有重复的
id
属性,这是无效的html)。对于
FooViewModel
的自定义
EditorTemplate
循环,您需要一个
。使用
for
循环(您的模型必须实现
IList

@model-IList
for(int i=0;im[i].BarId,…)
}
请注意,现在将显示html

<select name="[0].BarId" ..>
<select name="[1].BarId" ..>


等等。

旁注:这还存在一些其他问题,包括如果编辑设置了
BarId
值的现有项目,则在显示视图时仍将始终选择第一个选项(尽管它将正确发回)。但直到我看到你的控制器代码,我可以;我不会告诉你修复它的正确方法,但本质上你需要在每次迭代中生成一个新的
SelectList
<select name="[0].BarId" ..>
<select name="[1].BarId" ..>