1

私はこのようなコメントモデルを持っています:

public class Comment
    {
        public int? ParentId { get; set; }
        public string Text { get; set; }
        public int ProjectId { get; set; }
        public int UserWhoTypeId { get; set; }
    }

parentIDでコメントを並べて表示したい。親のコメントはに表示されdiv、子のコメントはに表示されます

<ul>
   <li>
      child comments go here
   </li>
</ul>

例えば、

  <ul>
       <li>
          <div>
               parent comments go here
          </div>
          <ul>
             <li>
                 child comments go here
             </li>
           </ul>
       </li>
  </ul>

まず、ツリーのようなLINQを使用してコメントを収集し、次に上記のように適用する必要があります。リンクやアドバイスをお願いします。

編集:

モデルを作成しました

public class CommentListModel
{
    public Comment Comment{ get; set; }
    public List<Comment> Childs { get; set; }
}

そして、私はすべてのコメントを1つのリストに集めました。

List<CommentListModel>  CommentHierarchy = MyService.GetCommentHierarchy();

次に、CommentHierarchyをツリー階層のように表示する必要があります。助けてください。

4

1 に答える 1

2

次のように、CommentListModel の「Childs」プロパティを CommentListModel のコレクションに変更できます。

public class CommentListModel
{
    public Comment Comment { get; set; }
    public List<CommentListModel> Childs { get; set; }
}

CommentListModel の表示テンプレートとして部分ビューを作成します (ファイルを DisplayTemplates フォルダーに置きます)。

@model CommentListModel
<ul>
    <li>
        <div>@Html.DisplayFor(m => m.Comment.Text)</div>
        @Html.DisplayFor(m => m.Childs)
    </li>
</ul>

次に、親ビューで次のように呼び出します。

 @Html.DisplayFor(m => m)

親ビューのモデルが CommentListModel オブジェクトのコレクションであると仮定します。

これにより、リストがコレクションと同じくらい深く再帰できるようになります。

于 2013-01-18T16:03:58.293 に答える