[英]How to display List as DropdownList in ASP MVC5 Razor
我想將角色列表顯示為下拉列表。
List<IdentityRole> roles = ContextManager.getApplicationDbContext().Roles.ToList();
IdentityRole defaultRole = roles.Find(item => item.Id == "salesManId");
ViewBag.Role = new SelectList(roles, "Role", "Role", defaultRole);
我的剃須刀代碼是:
<div class="form-group">
@Html.LabelFor(m => m.Role, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownList("Role", ViewBag.Role)
</div>
</div>
但是它不起作用。 誰能告訴我這個問題?
IdentityRole
不包含名為Role
的屬性(但是它確實具有一個名為Name
的角色名稱),並且由於您還對options value
屬性和顯示文本使用了相同的值,因此控制器代碼應僅為
IEnumerable<string> roles = ContextManager.getApplicationDbContext().Roles.Select(r > r.Name);
ViewBag.RoleList = new SelectList(roles);
請注意, ViewBag
名稱不應與綁定到的屬性名稱相同。 然后在視圖中使用
@Html.DropDownListFor(m => m.Role, (SelectList)ViewBag.RoleList)
並且如果您的屬性Role
的值與選項的值之一匹配,則在生成視圖時將選擇它。
編輯
根據您的評論,您想綁定到IdentityRole
的Id
屬性,在這種情況下,代碼需要
IEnumerable<IdentityRole> roles = ContextManager.getApplicationDbContext().Roles;
ViewBag.RoleList = new SelectList(roles, "Id", "Name");
並在生成視圖時選擇默認值
model.Role = roles.Where(r => r.Id == "salesManId").Select(r => r.Id);
// or just model.Role = "salesManId";
return View(model);
List<IdentityRole> roles = ContextManager.getApplicationDbContext().Roles.ToList();
IdentityRole defaultRole = roles.Find(item => item.Id == "salesManId");
ViewBag.RoleList = new SelectList(roles, "Role", "Role", defaultRole);
<div class="form-group">
@Html.LabelFor(m => m.Role, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownList("RoleList")
</div>
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.