使用SelectList填充的DropdownList忽略selectedValueProperty

时间:2014-03-11 10:24:56

标签: c# asp.net-mvc

您好我创建了SelectList

ViewBag.RoleId = new SelectList(unitOfWork.roleRepository.Get(), "Id", "RoleName", user.RoleId);

如您所见,为此SelectedValue设置了SelectList属性。

我将它绑定到DropDownList,如下例所示:

@Html.DropDownList("RoleId", null, new { @class = "form-control" })

列表已填充,但所选值始终是列表中的第一个值,而不是来自控制器的user.RoleId。 如何修改Html帮助器的初始化以使其工作?

2 个答案:

答案 0 :(得分:1)

SelectList构造函数需要将对象选为第4个参数。通过指定其中一个属性的值,无法在构造函数中自动选择此对象。正确的版本是:

var data = unitOfWork.roleRepository.Get();
ViewBag.RoleId = new SelectList(data, 
                 "Id", 
                 "RoleName",
                 data.Where(x => x.Id == user.RoleId).FirstOrDefault());

答案 1 :(得分:0)

将下拉列表绑定为:

@Html.DropDownList("Id", (SelectList)ViewBag.RoleId, "Select Item", new { @class = "form-control" })