Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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# 用SelectList填充的DropdownList忽略selectedValueProperty_C#_Asp.net Mvc - Fatal编程技术网

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并接受我已经编辑了我的答案,这样它就不会查询存储库两次。这只是一个小调整,但它有很大的改进。