MVC3.0+c#+razor:如何创建一个显示帖子和评论的页面创建部分

本文关键字:评论 显示 创建部 0+c#+razor 何创建 MVC3 创建 一个 | 更新日期: 2023-09-27 18:34:34

我正在尝试创建一个带有mvc的博客。我首先使用 EF 制作了一个数据库代码。现在我有一个页面,您可以在其中看到每页一篇帖子。下面我想显示对帖子的所有评论。这一切都工作正常。但是现在我想在同一页面上创建注释功能。

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

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

希望你明白我的意思和我想要完成的事情。提前提供任何帮助!

MVC3.0+c#+razor:如何创建一个显示帖子和评论的页面创建部分

如果你的Post模型包含一个List<Comment>,那么你当然可以使用它。即使您确实走这条路,使用 ViewModel 包装所有模型对象也绝不是一个坏主意。

仅仅为了可维护性,我会对页面上呈现的不同模型使用部分视图,但这纯粹是个人喜好的问题。

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

你的帖子应该有某种评论集。您应该能够只添加非模型绑定表单;在你的控制器中,你有你的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,所以我不确定具体实体框架。您是否遇到了一些具体问题?