Выбор утверждений пользователя удостоверения дает ошибку - PullRequest
0 голосов
/ 25 октября 2018
    [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).

Ошибка Ошибка изображения

1 Ответ

0 голосов
/ 25 октября 2018

Как обсуждалось в комментариях, в этом нет ничего плохого.Visual Studio просто показывает вам потенциальное значение c, но оно еще не находится в области действия.

Как вы уже убедились, сразу после ввода точки останова в Linq Select, c имеет значение.

Наконец, сообщение потока - это обычное сообщение, указывающее, что какой-то поток выполнял свою работу.

...