【发布时间】:2019-08-09 15:23:59
【问题描述】:
我有一个简单的服务是: 1. 获取系统中的所有角色 2.查看当前选中用户的角色 3. 在下拉列表中渲染所有角色,默认选择当前用户角色
为此,我有以下代码:
public ActionResult Edit(string userId)
{
var user = _oAuthUserService.GetUsers()?.Where(u => u.UserId == userId).FirstOrDefault();
var userRoles = user.Roles; //[Admin,Manager]
var allRolesFromService = _oAuthUserService.AllRoles.Select(x=>new {
Id =x.RoleName,
Name =x.RoleName
}).ToList(); //All roles in the System [Role1,Role2,Role3,Admin,Manager]
ViewData["AllRoles"] = new MultiSelectList(allRolesFromService, "Id", "Name", userRoles);
return View(user);
}
鉴于我正在做的,
@Html.ListBox("AllRoles", (MultiSelectList)ViewData["AllRoles"], new { multiple = "multiple" });
但是当我导航到 view 时,没有预先选择任何项目?我在这里错过了什么?
【问题讨论】:
-
尝试替换您的
ViewData键名,因为AllRoles已经用于绑定ListBox,避免潜在的命名冲突。或者将ListBoxFor与强类型视图模型属性一起使用。 -
改变 viewDataKey 有效!!从来没有,虽然这可能是问题,你能回答这个问题,我会接受作为解决方案。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor