Sup*_*lle 0 c# asp.net asp.net-core-mvc asp.net-core
我的下拉列表有问题。它始终为空,即使在调试时,列表中有4个不同的条目也在asp-items中设置,如下所示:
我究竟做错了什么?
ViewModel:
public IEnumerable<SelectListItem> SelectRole { get; set; }
public string RoleId { get; set; }
Run Code Online (Sandbox Code Playgroud)
控制器:
model.SelectRole = _roleManager.Roles?.Select(s => new SelectListItem
{
Value = s.Id,
Text = s.Name
});
Run Code Online (Sandbox Code Playgroud)
视图:
<select asp-for="RoleId" asp-items="@Model.SelectRole" class="form-control" />
Run Code Online (Sandbox Code Playgroud)
问题是您正在使用select如下所示的自闭标签:
<select asp-for="RoleId" asp-items="@Model.SelectRole" class="form-control" />
Run Code Online (Sandbox Code Playgroud)
它不会正确生成选择列表。
您可以按以下方式调整代码:
在ViewModel中:
public SelectList RoleSelectList { get; set; }
public string RoleId { get; set; }
Run Code Online (Sandbox Code Playgroud)
在控制器方法中:
var roleList = _roleManager.Roles.Select(r => new {r.Id, r.Name}).ToList();
model.RoleSelectList = new SelectList(roleList, "Id","Name");
Run Code Online (Sandbox Code Playgroud)
在视图中:
<select asp-for="RoleId" asp-items="Model.RoleSelectList" class="form-control">
<option value="">Select Role</option>
</select>
Run Code Online (Sandbox Code Playgroud)
现在一切正常。
| 归档时间: |
|
| 查看次数: |
2219 次 |
| 最近记录: |