使用RoleManager ApplicationRole插入新角色

时间:2018-11-08 23:39:11

标签: c# asp.net asp.net-web-api asp.net-core .net-core

我有一种添加新角色的方法,例如:

  public async Task<IActionResult> CreateRole(ApplicationRoleModel model)
        {
            try
            {
                foreach (var role in model.RoleList)
                {
                    var roleExists = await _roleManager.RoleExistsAsync(role.Name);
                    if (roleExists) continue;
                    var createRole = _roleManager.CreateAsync(role);
                }
                return Ok();
            }
            catch (Exception e)
            {
                return BadRequest();
            }
        }

如您所见,我使用foreach子句访问具有IEnumerable的{​​{1}}的模型,例如:

ApplicationRole

因此,如您在foreach中所见,我可以访问 public class ApplicationRoleModel : ClaimsToRoleModel { public IEnumerable<ApplicationRole> RoleList { get; set; } } 中的role.Name,我用邮递员对其进行了测试,并且可以正常工作,它成功地添加了新的Rolel,现在我想创建视图的邮递员创建新角色,所以我尝试:

RoleList (ApplicationRole)

但是当我尝试编译项目时,它会返回:

  

'IEnumerable'不包含以下定义   “名称”,没有扩展方法“名称”接受第一个参数   可以找到“ IEnumerable”类型(您是否缺少   使用指令还是程序集引用?)

因此,如何访问@page @model Security.Dto.Models.ApplicationRoleModel <form asp-controller="security" asp-action="CreateRole" method="post"> <h4>Create new Role</h4> <hr /> <div asp-validation-summary="All" class="text-danger"></div> <div class="form-group"> <label asp-for="RoleList.Name">Role Name</label> <input asp-for="RoleList.Name" class="form-control" /> </div> <button type="submit" class="btn btn-default">Create</button> </form> 的{​​{1}}属性以从视图分配给模型?问候

注意:我也尝试在视图上访问它,例如:

Name

但是我得到:

  

无法将[]的索引应用于类型的表达式   “ IEnumerable”

1 个答案:

答案 0 :(得分:0)

您认为模型是import { api } from './filepath.js',但是您尝试为IEnumerable<ApplicationRole>的单个实例创建控件

您可以在模型中使用ApplicationRole代替List<ApplicationRole>,并使用jquery如下添加角色列表

型号:

IEnumerable<ApplicationRole>

查看:

public class ApplicationRoleModel : ClaimsToRoleModel
{
    public List<ApplicationRole> RoleList { get; set; }    
}