【问题标题】:Selecting Identity User Claims giving error选择身份用户声明给出错误
【发布时间】:2018-10-27 14:21:56
【问题描述】:
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> EditUser(EditUserViewModel viewModel)
    {
        if (!ModelState.IsValid) return View();

        var user = await _userManager.FindByIdAsync(viewModel.Id);

        if (user == null) return RedirectToAction("Index", "Admin");

        var userClaims = await _userManager.GetClaimsAsync(user);
        
        if (viewModel.Admin)
        {
            if (!userClaims.Select(c => c.Value == "Admin").Any())
                await _userManager.AddClaimAsync(user, new Claim("Admin", "Admin"));
        }
        else
        {
            if (userClaims.Select(c => c.Value == "Admin").Any())
                await _userManager.RemoveClaimAsync(user, new Claim("Admin", "Admin"));
        }

        user.FirstName = viewModel.FirstName;
        user.LastName = viewModel.LastName;

        var result = await _userManager.UpdateAsync(user);

        if (result.Succeeded) return RedirectToAction("Index", "Admin");

        ModelState.AddModelError("", "Something went wrong");

        return View();
    }

当检查管理员声明是否存在给出错误:

c.Value=error CS0103:名称“c”在当前上下文中不存在

线程 0x990 已退出,代码为 0 (0x0)。

Error Error image

【问题讨论】:

    标签: c# asp.net-core-2.1 asp.net-core-identity


    【解决方案1】:

    正如 cmets 中所讨论的,没有任何问题。 Visual Studio 只是向您展示了c 的潜在价值,但它还不在范围内。

    正如你现在所看到的,只要你在 in 中放入断点,Linq Select, c 确实有一个值。

    最后,线程消息是一条常规消息,指示某个线程已完成其工作。

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      相关资源
      最近更新 更多