在 asp.net 身份中添加用户角色?

Add role of a user in asp.net identity?

我想将 AspNetRoles 中的角色分配给 AspNetUsers 中的用户,role/user 的 ID 都将存储在 AspNetUserRoles 中。

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser() { UserName = model.UserName  };

        var result = await UserManager.CreateAsync(user, model.Password);
        if (result.Succeeded)
        {
            var currentUser = UserManager.FindByName(user.UserName); 

            var roleresult = UserManager.AddToRole(currentUser.Id, "//Employee or Admin");

        }

我有一个下拉菜单,SuperAdmin 将从中 select 用户的角色,可以是管理员或员工。所以我想获得下拉 selected 项的值。我怎样才能做到这一点? 谢谢

如果您想要一些 Select/下拉菜单和可用角色并创建具有某些 selected 角色的用户。您必须为 RegisterViewModel class property: SelectedRole 创建 Select/dropdown 元素,并且能够 select 可用角色列表中的一个元素。

如何使用您可以找到的 there 角色填充 DropDownList

已修改注册视图模型以传输 SelectedRole 值:

public class RegisterViewModel
{
    [Required]
    [EmailAddress]
    [Display(Name = "Email")]
    public string Email { get; set; }

    [Required]
    [Display(Name = "Role")]
    public string SelectedRole { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}    

然后在注册期间,您必须使用视图模型中的 selected 角色并将您创建的用户添加到该角色。

var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
    var currentUser = UserManager.FindByName(user.UserName); 
    var roleresult = UserManager.AddToRole(currentUser.Id, model. SelectedRole);
    ...
}