Как получить поле модели пользователя на странице Razor? - PullRequest
0 голосов
/ 19 июня 2020

Я использую ядро ​​asp. net с Identity. Для пользователя у меня есть этот класс:

public class User : IdentityUser
{
    public List<Rate> Rates { get; set; }
}

Я хотел бы получить ставки внутри Razor, как это можно сделать с помощью поля имени (User.Identity.Name).

1 Ответ

0 голосов
/ 21 июня 2020

Во-первых, пожалуйста, подтвердите, успешно ли вы добавили one to many отношение Rate table для Identityuser и создали таблицу ставок в базе данных.

Пожалуйста, измените все Identityuser ссылается на (за исключением случаев, когда класс User наследует) в вашем проекте на ваш настроенный класс User , включая соответствующую страницу просмотра и класс запуска.

А затем измените ApplicationDbContext как выполните:

 public class ApplicationDbContext : IdentityDbContext<User>
    {
        public DbSet<Rate> Rate { get; set; }
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }
       
    }

Затем вызовите команду миграции . Подробнее см. В этом видео .

Вот мой класс скорости:

  public class Rate
    {
        [Key]
        public int Id { get; set; }
        public int rate { get; set; }
        public virtual User User { get; set; }
    }

После выполнения вышеуказанных операций add relevant Rates data в базу данных.

Затем запустите проект, войдите в систему с информацией о пользователе, а затем используйте следующий код в соответствующем действии и представлении, чтобы отобразить ставки связанного поля имени:

[Authorize]
public class AccountController : Controller
{ 
    private readonly ApplicationDbContext _context; 

    public AccountController(ApplicationDbContext context)
    {
        _context = context;
    }
    public async Task<IActionResult> Index()
    { 
        var rates = await _context.Rate.Include(host => host.User).Where(x => x.User.UserName == User.Identity.Name).ToListAsync();
        return View(rates);
    }
}

Razor View:

@model IEnumerable<Rate>

@{
    ViewData["Title"] = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml"; 
}

<h1>Index</h1>

UserName: @User.Identity.Name  related Rates data:
<table class="table table-bordered">
    <tr>
        <th>Id</th>
        <th>Rate</th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.rate</td>
        </tr>
    }
</table>

Вот результат теста:

введите описание изображения здесь

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