【问题标题】:Rendering Nested Comments渲染嵌套评论
【发布时间】:2012-08-28 20:32:43
【问题描述】:

我通常在一个简单的转发器中渲染 cmets。

我有一个需要嵌套 cmets 的社交应用程序(能够对评论发表评论)。

所以我的对象看起来像这样:

class Comment
{
    public string Body { get; set; }
    public User Creator { get; set; }
    public List<Comment> ChildComments { get; set; }
}

我可以使用嵌套中继器吗?这甚至是个好主意吗?我是否需要在递归循环中预渲染 HTML 并将其发送到文字?

不知道如何处理这个。

【问题讨论】:

  • 简单的答案是可以将中继器放置在其他中继器内部,但这会变得很难看。
  • 可以,在外中继器的ItemDataBound中绑定DataSource。如果需要,您可以通过转换 RepeaterItem 的 NamingContainer 从内部中继器的 ItemDataBound 中获取外部中继器。
  • 这是处理这个问题的好方法吗?这听起来非常混乱。
  • 嵌套评论本质上是一棵树,所以递归听起来是对的。不确定我是否可以使用控件来做到这一点。

标签: c# asp.net tree rendering nested-sets


【解决方案1】:

您可以使用 HTML 源代码块,然后遍历 cmets,为每个注释添加一个

开始,然后在每个注释之后,为该注释调用嵌套列表上的迭代器,然后添加结束

【讨论】:

  • 那么有一个 const string 运行在一个递归循环中,该循环应用 string.format() 或类似的东西?本质上将 HTML 构建为字符串,然后将其分配为文字?
  • 是的。在服务器上比所有这些用户控件便宜很多。
【解决方案2】:

听起来您需要在这里使用 UserControls。为知道如何呈现自己的评论创建一个用户控件,并且有 0...N 个其他 CommentUserControls(可能使用转发器呈现)。这实际上以嵌套中继器结束(有点),但通过将其中一个中继器封装在 UserControl 中,它应该会减少混乱。

【讨论】:

  • 我喜欢这种可重复和可重复使用的解决方案的想法,但这无助于真正实现该解决方案。
猜你喜欢
  • 2020-04-21
  • 2021-09-09
  • 2012-09-17
  • 2014-08-28
  • 1970-01-01
  • 2021-03-13
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多