在注册MVC 5中添加AspNetUserRoles

时间:2015-03-17 11:01:32

标签: asp.net asp.net-mvc razor asp.net-mvc-5

我在AspNetRoles表中添加了两个角色(所有者,承包商)

在这里阅读了一些线程后,我添加了将用户添加到特定角色的代码(所有者):

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new ApplicationUser() { UserName = model.Email, Email = model.Email};
            IdentityResult result = await UserManager.CreateAsync(user, model.Password);
            if (result.Succeeded)
            {
                UserManager.AddToRole(user.Id, "Owner");
                await SignInAsync(user, isPersistent: false);

                return RedirectToAction("Index", "Home");
            }
            else
            {
                AddErrors(result);
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

我想要做的是在注册屏幕上添加一组未经检查的单选按钮绑定到AspNetRoles表,并根据用户选择将它们添加到该角色。

如何在注册视图中访问AspNetRoles表中的当前角色?

更新:我试图将角色添加到控制器上的viewbag:

ViewBag.RoleList = new SelectList(RoleManager.Roles, "Id", "Name")

然而我收到以下错误:

Microsoft.AspNet.Identity.RoleManager<TRole,TKey>' requires 2 type arguments

这是基于另一篇文章并标记为答案。

1 个答案:

答案 0 :(得分:0)

控制器片段:

RolesList = RoleManager.Roles.ToList().Select(x => new SelectListItem()
            {
                Selected = userRoles.Contains(x.Name),
                Text = x.Name,
                Value = x.Name
            }

在模型中:

public IEnumerable<SelectListItem> RolesList { get; set; }

在视图中:

<div class="form-group">
        @Html.Label("Roles", new { @class = "control-label col-md-2" })
        <span class=" col-md-10">
            @foreach (var item in Model.RolesList)
            {
                        <input type="checkbox" name="SelectedRole" value="@item.Value" checked="@item.Selected" class="checkbox-inline" />
                        @Html.Label(item.Value, new { @class = "control-label" })
            }
        </span>
</div>

在这里找到了一个很好的例子,但它有点复杂。以上总结了相关片段:RolesExample