【问题标题】:How to get ApplicationUser object for a given user如何获取给定用户的 ApplicationUser 对象
【发布时间】:2018-02-26 09:08:34
【问题描述】:

在我的以下操作方法中,我正在关注 design time error 在线 var result = await _userManager.AddToRoleAsync(user, "AdminRole");。但是,如果我使用var user = new ApplicationUser { UserName = model.SelectedUserName 获取用户,那么上面的行不会给出设计时错误;正如预期的那样,它给出了run time validation errorUser someUSerName already exist。我了解运行时错误是由于我向现有用户添加角色但传递了它的新实例。 问题:如何获取现有用户作为 ApplicationUser 对象,以便将其传递给下面的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);
}

【问题讨论】:

    标签: asp.net-core asp.net-identity entity-framework-core


    【解决方案1】:

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

    似乎 AddToRoleAsync 期望 ApplicationUser 作为第一个参数,但你给 Task 因此,如果您在 FindByNameAsync 调用之前使用 await,您的 user 变量将是 ApplicationUser。

    【讨论】:

    • 您的解决方案有效。您实际上向我解释了await 的真实用法(谢谢)。您建议的解决方案中有错字。您可能在await _userManager.c(model.SelectedUserName); 中错过了FindByNameAsync。为了其他读者的利益,您能否编辑您的解决方案 - 我会将其标记为 Answer
    猜你喜欢
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2018-08-23
    相关资源
    最近更新 更多