繁体   English   中英

选择身份用户声明给出错误

[英]Selecting Identity User Claims giving error

    [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();
    }

当检查 Admin 声明存在时给出错误:

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

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

错误错误图像

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

正如您现在看到的,只要您Linq Select放置断点, c有一个值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM