首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MVC 3博客中显示嵌套注释

在MVC 3博客中显示嵌套注释
EN

Stack Overflow用户
提问于 2012-07-27 05:53:02
回答 2查看 3.1K关注 0票数 2

我正在使用MVC 3,Razor和实体框架制作一个博客。我现在正在编写Comment部分。

我正在使用下表作为评论。

在这里,我使用'CommentParent‘列,并将其设置为另一个'CommentID’的值,如果用户正在回复注释的,则设置为null。

问题

我使用下面的代码来显示注释,

代码语言:javascript
复制
@foreach (var comment in Model.Comments)
{
    <div>
        @comment.CommentContent
    </div>
    <br />
}

我不知道如何显示"replyTo“注释,如下图所示.

请有人指点我这是怎么做的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-27 06:09:17

首先,您必须更改模型类,假设您的模型类是:

代码语言:javascript
复制
public class CommentsModel
{
     Public Int64 CommentId {get;set;}
     ....
     ....
     //Introduce a new property in it as:
     Public CommentsModel[] ChildComments {get;set;}
}

此新属性将将特定注释的子注释保存到N级。在你看来,你可以这样做:

代码语言:javascript
复制
@foreach (var comment in Model.Comments)
{
    <div>
    @comment.CommentContent
    </div>
    <br />
    @if(comment.ChildComments.Length > 0)
    {
        // Display Level 1 Comments and so on and so far
    }
}

您可以通过在Divs上使用Css类来管理注释的查找。

票数 3
EN

Stack Overflow用户

发布于 2012-07-27 06:27:36

试试这个:

代码语言:javascript
复制
 private void CreateComments(int ? postId, int ? cid)
      {          
        int? id = cid;                
        var replies = new List<Comment>();
        if (postId.HasValue())
        {
              var BlogPost = context.Posts.Single(p=>p.Id == postId.Value);
              replies = BlogPost.Comments.Where(c=>c.CommentParent == null);  
        }
        else
        {
            replies = context.Comments.Where(c=>c.CommentParent == id);         
        }  

        int level = 0;
        Comment tmp = new Comment();
        foreach (Comment reply in replies)
            {     
                tmp = reply;
                while(tmp.CommentParent != null){
                      level++;
                      tmp = context.Comments.Single(c=>c.Id == tmp.CommentParent);
                }
                //logic for creating your html tag 
                //you can use "level" to leave appropriate indent back to your comment.
                CreateComments(null,reply.id);
            }   
     }

编辑:

您甚至可以确定您的当前水平,就像我在foreach循环中所做的那样。

我希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11682187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档