C# MVC在对象集合的编辑视图中的dropdownlist中显示对象值

C# MVC在对象集合的编辑视图中的dropdownlist中显示对象值,c#,asp.net,asp.net-mvc,asp.net-mvc-4,dropdownlistfor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Dropdownlistfor,我在从控制器到视图以及从控制器到视图的通信中遇到了一些问题。这是我的控制器: ViewBag.MANAGER_IDS = new SelectList(db.APP_USERS, "USER_ID", "USER_ID"); return View(app_users_manager); 我想做的是在dropdownlist中为每个对象(即应用程序\用户\管理器)填充管理器ID 以下是我的看法: @model List<HRM.Models.APP_USERS_MANAGER> @

我在从控制器到视图以及从控制器到视图的通信中遇到了一些问题。这是我的控制器:

ViewBag.MANAGER_IDS = new SelectList(db.APP_USERS, "USER_ID", "USER_ID");
return View(app_users_manager);
我想做的是在dropdownlist中为每个对象(即应用程序\用户\管理器)填充管理器ID

以下是我的看法:

@model List<HRM.Models.APP_USERS_MANAGER>
@{
    ViewBag.Title = "Edit managers";
}
@using (Html.BeginForm("Edit", "UserManager", FormMethod.Post)) {
    @Html.AntiForgeryToken()

    <table>
        <tr class="myidtr">
            <th>Manager role</th>
            <th>Manager</th>
        </tr>
        @for (int i = 0; i < Model.Count; i++)
        {
            <tr class="mytr">
                @Html.Hidden("app_users_manager[" + @i + "].USER_ID", Model[i].USER_ID)
                <td>
                    @Html.DisplayFor(modelItem => Model[i].APP_MANAGERS.MANAGER_DESCRIPTION)
                </td>
                <td>
                    @Html.DropDownList("app_users_manager[" + @i + "].USER_ID_MANAGER", ViewBag.USER_ID_MANAGER as List<SelectListItem>, "-Select manager-")
                </td>
            </tr>
        }
    </table>

    @Html.ValidationSummary(false)
    <p>
        <input type="submit" value="Save" />
    </p>
}
@型号列表
@{
ViewBag.Title=“编辑管理器”;
}
@使用(Html.BeginForm(“编辑”、“用户管理器”、FormMethod.Post)){
@Html.AntiForgeryToken()
经理角色
经理
@for(int i=0;iModel[i].APP\u MANAGERS.MANAGER\u DESCRIPTION)
@Html.DropDownList(“app_users_manager[“++@i+”].USER_ID_manager”,ViewBag.USER_ID_manager as List,“-选择管理器-”)
}
@Html.ValidationSummary(false)

}
我可以通过以下方式完成此操作:

@Html.DropDownList(Model[i].USER_ID_MANAGER, ViewBag.USER_ID_MANAGER as List<SelectListItem>, "-Select manager-", new { @Id = "Test"})
@Html.DropDownList(模型[i]。用户ID管理器,ViewBag.USER ID管理器作为列表,“-选择管理器-”,新建{@ID=“测试”})
但是我在控制器中没有得到更新的值。或者,如果我执行以下操作,则无法在视图中获得价值:

@Html.DropDownList("USER_ID_MANAGER", ViewBag.USER_ID_MANAGER as List<SelectListItem>, "-Select manager-")
@Html.DropDownList(“USER\u ID\u MANAGER”,ViewBag.USER\u ID\u MANAGER as List,“-Select MANAGER-”)

有人能告诉我里面出了什么问题吗?非常感谢您的帮助

谢谢你的宝贵意见,斯蒂芬。我能够查看和保存更改的值。对于以后任何人提到的类似问题,以下是我如何解决的:

public ActionResult Edit(string user_id)
{
ViewBag.USER_ID_MANAGER = new SelectList(db.APP_USERS, "USER_ID", "USER_ID");
            return View(app_users_manager);
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(List<APP_USERS_MANAGER> app_users_manager)
{
return View(app_users_manager);
}

@Html.DropDownListFor(m=>m[i].USER\u ID\u MANAGER,new SelectList(ViewBag.MANAGER\u ID,“Value”,“Text”,,“-Select MANAGER-”)
另请参阅感谢回复的第二部分stephen,我仍然得到了相同的结果,即在dropdownlist中仍然没有设置对象属性值您阅读了我链接到的答案吗?在将集合传递给视图之前,您是否在集合中的每个对象中设置了
USER\u ID\u MANAGER
的值?如果是这样,那么它需要是
@Html.DropDownListFor(m=>m[i]。USER\u ID\u MANAGER,new SelectList(ViewBag.MANAGER\ID,“Value”,“Text”,Model[i]。USER\u ID\u MANAGER),“-Select MANAGER-”)
谢谢Stephen,我现在可以在dropdownlist中设置值,但是控制器中的post方法仍然将此值设置为null。这就是我的post方法看起来像“public ActionResult Edit(列出应用程序用户管理器)”的方式。这是因为我将视图中的集合绑定到应用程序用户管理器
@Html.DropDownList("app_users_manager[" + @i + "].USER_ID_MANAGER", new SelectList(ViewBag.USER_ID_MANAGER, "Value", "Text", Model[i].USER_ID_MANAGER), "-Select manager-")