Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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# 如何在mvc中绑定复杂对象列表以查看post上的模型?_C#_Asp.net_Asp.net Mvc_Razor_Model Binding - Fatal编程技术网

C# 如何在mvc中绑定复杂对象列表以查看post上的模型?

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

我正在视图上创建x个dropdownlist,并希望将所选值绑定回post上的视图模型。我看过Scott的,并试图写我的代码,但仍然无法让它工作

我的视图模型由两项组成。一个是dropdownlist的名称标签,一个是selected value。我需要选择的值,因为我需要预先选择dropdownlist

虚拟机

视图获取视图模型的列表。原因是我不知道在设计时我需要的dropdownlist的数量。它因用户而异

@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"))