簡體   English   中英

如何在ASP MVC5 Razor中將列表顯示為DropdownList

[英]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的值與選項的值之一匹配,則在生成視圖時將選擇它。

編輯

根據您的評論,您想綁定到IdentityRoleId屬性,在這種情況下,代碼需要

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM