首先创建一个视图模型类来表示要传递的数据
public class PostCount
{
public string Name { get; set; }
public int Count { get; set; }
}
现在在action方法中,可以查询
Tags
集合并呼叫
Count
PostTags
各自的财产
Tag
对象。在LINQ表达式中,可以进行投影来创建视图模型对象。
public async Task<IEnumerable<PostCount>> AllTags()
{
var tags = await _context.Tags
.Select(a => new PostCount
{
Name = a.Name,
Count = a.PostTags.Count()
}
).ToListAsync();
return tags;
}
当您访问此操作方法时,上面的命令将返回所需的数据。
如果您在视图中显示这个,您可以将我们创建的列表返回到您的视图中。在您的视图中,它是强类型的
PostCount
类,可以呈现标记名及其post count
public async Task<IEnumerable<PostCount>> AllTags()
{
var tags = await _context.Tags.Select(a => new PostCount
{
Name = a.Name,
Count = a.PostTags.Count()
}).ToListAsync();
return View(tags);
}
在你的
AllTags.cshtml
@model List<PostCount>
<h3>Tags</h3>
@foreach(var tag in Model)
{
<p>@tag.Name @tag.Count </p>
}
另外,您可能需要在
PostTag
public class PostTag
{
public int Id { set;get; }
// other properties you have
}