我的下拉列表有问题。它始终为空,即使在调试时,列表中有4个不同的条目也在asp-items中设置如下:
我在做什么错了?
ViewModel:
public IEnumerable<SelectListItem> SelectRole { get; set; }
public string RoleId { get; set; }
控制器:
model.SelectRole = _roleManager.Roles?.Select(s => new SelectListItem
{
Value = s.Id,
Text = s.Name
});
查看:
<select asp-for="RoleId" asp-items="@Model.SelectRole" class="form-control" />
答案 0 :(得分:1)
问题是您正在使用如下所示的自闭select
标签:
<select asp-for="RoleId" asp-items="@Model.SelectRole" class="form-control" />
它将无法正确生成选择列表。
您可以如下调整代码:
在ViewModel中:
public SelectList RoleSelectList { get; set; }
public string RoleId { get; set; }
在控制器方法中:
var roleList = _roleManager.Roles.Select(r => new {r.Id, r.Name}).ToList();
model.RoleSelectList = new SelectList(roleList, "Id","Name");
在视图中:
<select asp-for="RoleId" asp-items="Model.RoleSelectList" class="form-control">
<option value="">Select Role</option>
</select>
现在一切正常。