«IIdentity» не содержит определения «Score» - PullRequest
1 голос
/ 04 марта 2020

Я создаю веб-сайт для прогнозирования на ядре ASP. NET в Visual Studio и, конечно, мне нужна переменная "Score" для каждого пользователя. Вот почему я добавил столбец «Score» во встроенную таблицу IdentityUser, создав новый класс с IdentityUser в качестве базового класса. Единственное, что я добавил, - это свойство Score.

 public class UserIdentity : IdentityUser<Guid>
    {
        public int Score { get; set; }
    }

Теперь я хочу отобразить счет в панели навигации вместе с именем текущего пользователя, но я получаю сообщение об ошибке, что Score не существует. в том же пространстве имен, что и имя пользователя.

HTML код из моего файла _Layout (для панели навигации):

@if (signInManager.IsSignedIn(User))
                        {
                            <li class="nav-item">
                                <form method="post" asp-action="logout" asp-controller="account">
                                    <button type="submit" class="nav-link btn btn-link py-0" style="width:auto">Uitloggen @User.Identity.Name <br /> @Convert.ToString(User.Identity.Score)  punten</button>
                                </form>
                            </li>
                        }

Заранее спасибо!

1 Ответ

0 голосов
/ 04 марта 2020

Самый простой способ сделать это, используя UserManager, ваш логин должен выглядеть следующим образом

@inject UserManager<UserIdentity> UserManager


@if (signInManager.IsSignedIn(User))
                    {
                       var user = await UserManager.FindByNameAsync(User.Identity.Name);

                        <li class="nav-item">
                            <form method="post" asp-action="logout" asp-controller="account">
                                <button type="submit" class="nav-link btn btn-link py-0" style="width:auto">Uitloggen @User.Identity.Name <br /> @user.Score  punten</button>
                            </form>
                        </li>
                    }

Для вашего файла _Layout вы можете реализовать это следующим образом

@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - WebApplication5</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" 
/>
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>

                  @if (signInManager.IsSignedIn(User))
                    {
                       var user = await UserManager.FindByNameAsync(User.Identity.Name);

                        <li class="nav-item">
                            <form method="post" asp-action="logout" asp-controller="account">
                                <button type="submit" class="nav-link btn btn-link py-0" style="width:auto">Uitloggen @User.Identity.Name <br /> @user.Score  punten</button>
                            </form>
                        </li>
                    }

Еще один способ расширить вашу личность, основываясь на принципе претензий. Для получения дополнительной информации следуйте этой ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...