1

我正在尝试使用 mvc 创建一个博客。我先用 EF 做了一个数据库代码。现在我有一个页面,您可以在其中每页看到一篇文章。下面我想显示该帖子的所有评论。这一切都很好。但现在我想在同一页面上创建一个创建评论功能。

我不知道该怎么做?因为这必须创建一个新对象“评论”而不是我在视图中设置为模型的“帖子”对象。所以我认为我有不同的模型?我不认为这是可能的,对吧?也许我可以只使用“发布”模型,因为它有评论作为列表<>?

我需要为此使用部分视图还是模型视图?

希望你知道我的意思和我想要完成的事情。提前 Tnx 寻求帮助!

4

3 回答 3

1

If your Post model contains a List<Comment> then you could of course use that. Even if you do go that route, using a ViewModel to wrap all of your model objects is never a bad idea.

Simply for the sake of maintainability, I would use partial views for the different models rendered on your page, but that's is purely a matter of personal preference.

于 2012-05-18T19:02:27.827 回答
0

是的,您可以通过使用局部视图来做到这一点。制作一个将评论发布到服务器的部分视图。在评论列表下方显示此部分视图。当用户发布评论时,然后通过 json 调用提交评论,成功后制作 html 评论字符串并将其附加到评论列表中。这样,您的评论将被发布并加载到评论列表中,而无需重新加载整个模型

于 2012-05-18T20:23:31.430 回答
0

您的帖子应该有某种评论集合。您应该能够只添加一个非模型绑定的表单;在你的控制器中,你有你的collection,只需从中提取数据。

我的意思是:在你看来,你会有类似的东西

@Html.TextArea("CommentText")

在您的控制器中:

public ActionResult Create(FormCollection collection) {
  string commentText = collection["CommentText"];
  Post p = ... ; // Not familiar with EF
  p.Comments.Add(new Comment(commentText));
  p.Save(); // ActiveRecord style, not sure about EF
}

它应该很简单。我在 NHibernate 上使用 ActiveRecord,所以我不确定实体框架。您是否遇到了一些具体问题?

于 2012-05-18T19:02:42.697 回答