Доступ к элементам из нескольких таблиц в IEnumerable в представлении Razor - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу спросить, как я могу получить доступ к списку, содержащему различные элементы из нескольких таблиц в представлениях бритвы:

public IEnumerable Blogs { get; set; }

public async Task OnGetAsync()
{
    Blogs = await _context.Blog
            .Select(b => new
            {
                b.Id,
                b.Name,                           
                b.Owner.UserName,
            })
            .ToListAsync();

}

как я могу получить к нему доступ в представлении бритвы?

, когда я используюследующее:

@foreach (var b in Model.Blogs)
{
    <div> @b </div>
}

Я получаю все объекты в строке в виде строки!но я не могу использовать @ b.Id, например, я просто получаю методы (ToString, Equal ...)

как я могу получить доступ к свойствам объекта?например: @ b.Id, @ b.Name ...

Спасибо

Обновление: предположим, я хочу использовать это:

public async Task OnGetAsync()
{
    var Blogs = await _context.Blog
            .Select(b => new
            {
                b.Id,
                b.Name,                           
                b.Owner.UserName,
            })
            .ToListAsync();

}

как я могу получить доступ к varБлоги по индексу?

1 Ответ

0 голосов
/ 26 ноября 2018

Вместо использования анонимных объектов, вы должны создать класс BlogViewModel, который имеет три свойства, которые вы хотите:

public class BlogViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string OwnerName { get; set; }
}

Тогда ваша логика построения запросов и списков будет такой:

public List<BlogViewModel> Blogs { get; set; }

public async Task OnGetAsync()
{
     Blogs = await _context.Blog
            .Select(b => new BlogViewModel()
            {
                Id = b.Id,
                Name = b.Name,                           
                OwnerName = b.Owner.UserName,
            })
            .ToListAsync();
}

Тогда вы можете легко получить доступ к свойствам в вашем цикле в бритве

...