在Razor视图中的IEnumerable中的几个表中访问元素

时间:2018-11-26 20:10:36

标签: c# asp.net-mvc entity-framework razor-pages

我想问一问我如何才能在剃刀视图中访问包含几个表中不同元素的列表:

public IEnumerable Blogs { get; set; }

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

}

我如何在Razor视图上访问它?

当我使用以下内容时:

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

我将所有对象作为字符串放入行中! 但是我不能使用@ b.Id例如,我只能获取方法(ToString,等于...)

我如何访问对象属性?例如:@ 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 :(得分:1)

应该使用具有三个所需属性的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();
}

然后,您可以在剃须刀中轻松访问循环中的属性