如何为给定用户获取应用程序对象



在我的以下操作方法中,我在var result = await _userManager.AddToRoleAsync(user, "AdminRole");上遵循design time error。但是,如果我使用var user = new ApplicationUser { UserName = model.SelectedUserName获取用户,那么上面的行不会给出设计时间错误。正如预期的那样,它给出run time validation error为:User someUSerName already exist。我了解运行时间错误是由于我正在向现有用户添加角色,但要传递新实例。问题:如何将现有用户作为应用程序对象作为应用程序,以便我可以将其传递给下面的AddToRoleAsync(....)?我正在使用ASP.NET Core 1.1.1,单个用户帐户模式,VS2017。

错误

Cannot convert from  Task<MyProj.Model.ApplicationUser> to MyProj.Model.ApplicationUser

控制器

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> AddUserToRole(RoleRelatedViewModel model, string returnUrl = null)
{
    ViewData["ReturnUrl"] = returnUrl;
    if (ModelState.IsValid)
    {
        var user = _userManager.FindByNameAsync(model.SelectedUserName); //cannot be used in AddToRoleAsync(user,"AdminRole") since FindByNameAsync returns Task<ApplicationUser>
        //var user = new ApplicationUser { UserName = model.SelectedUserName };
        var result = await _userManager.AddToRoleAsync(user, "AdminRole");
        if (result.Succeeded)
        {
            return RedirectToLocal(returnUrl);
        }
        AddErrors(result);
    }
    // If we got this far, something failed, redisplay form
    return View(model);
}

尝试var user = await _userManager.FindByNameAsync(model.SelectedUserName);

似乎Addtoroleasync期望Applicatuser作为第一个参数,但是您提供了任务因此,如果您使用等待在FindbyNameSync调用您的用户变量之前,将是应用程序使用者。

相关内容

  • 没有找到相关文章

最新更新