选择身份用户声明错误

时间:2018-10-25 10:16:44

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

    [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 =错误CS0103:名称'c'在当前上下文中不存在

     

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

Error Error image

1 个答案:

答案 0 :(得分:0)

如评论中所述,没有错。 Visual Studio只是向您显示c的潜在价值,但尚未包括在内。

正如您现在所看到的,只要在Linq Select中插入断点 c就会有一个值。

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