C# 用SelectList填充的DropdownList忽略selectedValueProperty
您好,我创建了一个C# 用SelectList填充的DropdownList忽略selectedValueProperty,c#,asp.net-mvc,C#,Asp.net Mvc,您好,我创建了一个选择列表: ViewBag.RoleId = new SelectList(unitOfWork.roleRepository.Get(), "Id", "RoleName", user.RoleId); 如您所见,已为此SelectList设置了SelectedValue属性 我正在将其绑定到DropDownList上,如本示例中所示: @Html.DropDownList("RoleId", null, new { @class = "form-control" })
选择列表
:
ViewBag.RoleId = new SelectList(unitOfWork.roleRepository.Get(), "Id", "RoleName", user.RoleId);
如您所见,已为此SelectList
设置了SelectedValue
属性
我正在将其绑定到DropDownList
上,如本示例中所示:
@Html.DropDownList("RoleId", null, new { @class = "form-control" })
列表已填充,但所选值始终是列表中的第一个值,而不是来自控制器的user.RoleId
。
如何修改Html帮助程序的初始化以使其正常工作?构造函数希望将对象选择为第四个参数。无法通过指定其属性之一的值在构造函数中自动选择此对象。正确的版本是:
var data = unitOfWork.roleRepository.Get();
ViewBag.RoleId = new SelectList(data,
"Id",
"RoleName",
data.Where(x => x.Id == user.RoleId).FirstOrDefault());
将dropdownlist绑定为:
@Html.DropDownList("Id", (SelectList)ViewBag.RoleId, "Select Item", new { @class = "form-control" })
您需要设置应选择为第四个参数的对象。当前,您正在指定其一个属性的值。尝试类似的方法:
ViewBag.RoleId=newselectlist(unitOfWork.roleRepository.Get(),“Id”,“RoleName”,unitOfWork.roleRepository.Get()。其中(x=>x.Id==user.RoleId.FirstOrDefault())
。我只需要:var z=unitOfWork.roleRepository.Get()。其中(x=>x.Id==user.RoleId)。FirstOrDefault()
然后:ViewBag.RoleId=new SelectList(unitOfWork.roleRepository.Get(),“Id”,“RoleName”,z.Id)
谢谢。把它作为一个答案,我将+1并接受我已经编辑了我的答案,这样它就不会查询存储库两次。这只是一个小调整,但它有很大的改进。