我有一个像这样的模型视图模型:
public class ApplicationRoleViewModel
{
public int RoleId { get; set; }
public List<SelectListItem> RolesToUser { set; get; }
public class SelectListItem
{
public string RoleId { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Role Name")]
public string RoleName { get; set; }
public string Description { get; set; }
}
}
我想从此视图模型创建一个列表以在选择列表中进行设置,所以我尝试:
[HttpGet]
public async Task<IActionResult> GetAvailableUserRoles()
{
var roles = _roleManager.Roles.ToList();
var vm = new ApplicationRoleViewModel();
vm.RolesToUser = roles.Select(a => new ApplicationRoleViewModel.SelectListItem()
{
Value = a.Id,
Text = a.Name
}).Tolist()
return Ok(vm);
}
但是我得到了错误:
'ApplicationRoleViewModel.SelectListItem'不包含 “值”的定义
查看:
<form asp-controller="security" asp-action="GetAvailableUserRoles" method="get">
<h4>Assign role to user</h4>
<hr />
<div asp-validation-summary="All" class="text-danger"></div>
<select asp-for="RoleId" asp-items="@Model.RolesToUser">
<option>Please select one</option>
</select>
<br />
<button type="submit" class="btn btn-default">Create</button>
</form>
我认为有误:
'System.Collections.Generic.List' 至 'System.Collections.Generic.IEnumerable'。 存在显式转换(您是否缺少演员表?)
我在做什么错了?
答案 0 :(得分:0)
为解决此问题,我将列表项的列表创建为:
List<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem> item = roles.ConvertAll(a =>
{
return new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem()
{
Text = a.Id.ToString(),
Value = a.Name.ToString(),
};
});