我正在尝试计算帖子中的评论数量(尝试创建某种博客)并将其显示在帖子的标题中。这是一些代码。
我的模特:
public class Post
{
public int ID { get; set; }
public string Title { get; set; }
public string Message { get; set; }
public string Author { get; set; }
public DateTime DateTime { get; set; }
public List<Comment> Comments { get; set; }
}
public class Comment
{
public int ID { get; set; }
public int PostID { get; set; }
public string Message { get; set; }
public string Author { get; set; }
public DateTime DateTime { get; set; }
}
我的控制器:
public ActionResult Index()
{
var dbPosts = (from p in db.Posts
orderby p.ID descending
select p).ToList();
return View(dbPosts);
}
我的观点:
@foreach (var post in Model) {
**@post.Comments.Where(x => x.PostID == post.ID).Count()**
<h3>@Html.ActionLink(post.Title, "Details", new { id = post.ID })</h3>
<span class="written">skrevet d. @post.DateTime.ToLongDateString() @post.DateTime.ToShortTimeString() af @post.Author</span>
<p>@post.Message</p>
<hr />
}
我用星星标记了我的错误。它给我一个错误,说“价值不能为空。”
任何可以帮助我解决这个问题的人?
亲切的问候和提前谢谢
答案 0 :(得分:3)
在您的foreach循环视图中,您正在访问您的帖子,所以只需执行
@post.Comments.Count
另外我认为您在Controller中的查询可能会延迟加载评论,当您将它们发送到View时它们实际上并不包括在内,所以急切加载评论:
var dbPosts = db.Posts.Include("Comments").OrderByDescending(p => p.ID).ToList();