我是初学ASP.net,我想在帖子中显示所有评论。 PostController中的Detail()方法只显示帖子内容,我不知道如何处理在帖子中显示commnent的Detail()方法。
希望有人可以帮助我,非常感谢。
我有两个型号
public class Post
{
public int PostID { get; set; }
public string Title{ get; set; }
public string Content{ get; set; }
}
public class Comment
{
public int CommentID { get; set; }
public int PostID { get; set; }
public string Content { get; set; }
}
这是Post Controller
public class PostController : Controller
{
//////
public ViewResult Detail(int id )
{
Post viewpost= (repository.Posts.Single(p => p.PostID == id));
return View(viewpost);
}
////////////////
}
答案 0 :(得分:1)
public class ViewPostModel
{
public Post Post { get; set; }
public List<Comment> Comments { get; set; }
}
然后,您必须在两个列表中查询您的存储库:
public class PostController : Controller
{
public ViewResult Detail(int id )
{
ViewPostModel viewpost = new ViewPostModel();
viewPost.Post = repository.Posts.Single(p => p.PostID == id);
viewPost.Comments = repository.Comments.Where(c=> c.PostID = id).ToList();
return View(viewpost);
}
}
答案 1 :(得分:0)
首先,你应该从post到它的评论有一个导航属性。 像这样的东西:
public class Post
{
public int PostID { get; set; }
public string Title{ get; set; }
public string Content{ get; set; }
public virtual IEnummrable<Comment> Comments {get; set;}
}
请注意,如果您使用DB-First来执行此操作,则应编辑EDMX
然后只需从存储库中获取注释:
public ViewResult Detail(int id )
{
Post viewpost= (repository.Posts.Include("Comments").Single(p => p.PostID == id));
return View(viewpost);
}
在您的视图中,迭代您的评论并将其显示为
@foreach (var comment in Model.Comments)
{
@comment.Content
}
修改强> 以上所有内容仅在使用EF \ Linq-2-SQL时才有意义(感谢@tostringtheory)
答案 2 :(得分:0)
您也可以使用ViewData将注释放入View。
例如: 行动: ViewData [“Comments”] = repository.Comments.Where(c =&gt; c.PostID = id).ToList();
查看: var comments = ViewData [“Comments”]作为List; ......你可以使用var-comments