0

我正在尝试计算帖子中的评论数量(尝试创建某种博客)并将其显示在帖子的标题中。这是一些代码。

我的模型:

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 />
}

我用星星标记了我的错误。它给了我一个错误,说“值不能为空”。

谁能帮我解决这个问题?

提前致以诚挚的问候和感谢

4

1 回答 1

3

在 foreach 循环中的视图中,您正在访问您的帖子,所以就这样做

@post.Comments.Count

另外我认为您在控制器中的查询可能会延迟加载评论,并且当您将它们发送到您的视图时它们实际上并没有包含在内,因此急切加载评论:

var dbPosts = db.Posts.Include("Comments").OrderByDescending(p => p.ID).ToList(); 
于 2013-04-09T17:27:22.907 回答