设置身份角色列表

时间:2018-11-13 17:28:04

标签: c# asp.net-core

我有一个像这样的模型视图模型:

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'。   存在显式转换(您是否缺少演员表?)

我在做什么错了?

1 个答案:

答案 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(),
                };
            });
相关问题