C# 如何在mvc中绑定复杂对象列表以查看post上的模型?
我正在视图上创建x个dropdownlist,并希望将所选值绑定回post上的视图模型。我看过Scott的,并试图写我的代码,但仍然无法让它工作 我的视图模型由两项组成。一个是dropdownlist的名称标签,一个是selected value。我需要选择的值,因为我需要预先选择dropdownlist 虚拟机 视图获取视图模型的列表。原因是我不知道在设计时我需要的dropdownlist的数量。它因用户而异C# 如何在mvc中绑定复杂对象列表以查看post上的模型?,c#,asp.net,asp.net-mvc,razor,model-binding,C#,Asp.net,Asp.net Mvc,Razor,Model Binding,我正在视图上创建x个dropdownlist,并希望将所选值绑定回post上的视图模型。我看过Scott的,并试图写我的代码,但仍然无法让它工作 我的视图模型由两项组成。一个是dropdownlist的名称标签,一个是selected value。我需要选择的值,因为我需要预先选择dropdownlist 虚拟机 视图获取视图模型的列表。原因是我不知道在设计时我需要的dropdownlist的数量。它因用户而异 @model List<ColumnMapperVm> @for (i
@model List<ColumnMapperVm>
@for (int i = 0; i < Model.Count; i++ )
{
<tr>
<td style="width: 50%;">
@Html.DisplayFor(m => m[i].Column)
</td>
<td>
@Html.DropDownList("SelectedValue", new SelectList(ViewBag.Columns, "StaticName", "DisplayName", Model[i].SelectedValue))
</td>
</tr>
}
@型号列表
@for(int i=0;im[i].Column)
@DropDownList(“SelectedValue”,新建SelectList(ViewBag.Columns,“StaticName”,“DisplayName”,Model[i].SelectedValue))
}
我将选择列表放在一个视图包中,因为我想保留我的视图模型clern,而我不选择列表不会返回到服务器
这是我的控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MapColumns(List<ColumnMapperVm> colmapper)
{
//colmapper is null
}
[HttpPost]
[ValidateAntiForgeryToken]
公共操作结果映射列(列表colmapper)
{
//colmapper为空
}
当然,我在FormCollection中获得了值,但model binder没有绑定视图模型,我想知道如何使其工作。一个可能的原因可能是,当前post上的所有下拉列表都向请求添加了同名的值。要解决此问题,您可以使用
DropDownListFor
:
@Html.DropDownListFor(m => m[i].SelectedValue, new SelectList(ViewBag.Columns, "StaticName", "DisplayName"))
这将确保所有下拉列表在HTML标记中具有正确的名称
@Html.DropDownListFor(m => m[i].SelectedValue, new SelectList(ViewBag.Columns, "StaticName", "DisplayName"))