6

我正在开发一个类似评论的平台,用户可以在其中发表评论,其他用户可以回复该评论。但这些评论可以从两个方向回复(回复和展开)。这个想法是用户可以回复并且用户也可以扩展该讨论。请看图片。

在此处输入图像描述

我开发了一个控件,只要用户回复或展开评论,就会动态添加该控件。

如果用户将回复控件,则将在该消息(评论)下添加一个新控件,如果用户展开该消息(评论),则将在该消息(评论)的右侧添加一个具有扩展回复(消息)的控件。多个用户可以展开消息,用户还可以回复展开的消息。

我不确定应该在其中添加这些控件的占位符或容器是什么。

  • 我应该使用服务器Table控件并动态创建TableRowsTableCells
  • 我应该使用什么容器以使页面不会太重?
  • 我应该divs在运行时创建和调整它的位置并在每个中添加控制 div吗?

我不清楚的其他问题是:

  • 多个用户可以展开一条消息,在这种情况下如何处理 UI。隐藏/显示控件或任何其他解决方案。
  • 我应该scrollbar在扩展上显示水平还是有其他解决方案?

任何帮助/建议?

谢谢。

4

4 回答 4

2

你可以用不同的方式做到这一点,我不会给你代码,因为我希望你尝试学习。因此,您可以使用 JQuery 完成所有这些操作,您不需要 Asp.net 控制器,因为有时它们使用起来很复杂。

所以 1º 步骤: 您可以创建一个包含 2 列和N行的简单表格,具体取决于您拥有的消息数量(尝试过滤一些,例如:您有 100 条,仅显示 10 条并有一个“下一页”)或使用一些插件表为您保存大数据。

2º 步骤: 当您回复消息时,<tr>在您的表格中创建一个“回复第一条消息”(注意:您需要创建一个结构来轻松处理您在表格上的导航ID's

3º步骤: 在您的第二列中<div>准备好在用户单击“展开”时接收并显示展开消息,并在展开新消息时始终清除它。

这应该对你有用,还有其他方法,但试着用简单的方式思考

其他问题:

1º - 我不明白这个问题,但如果您的网站将在服务器上运行,user1 和 user2,... userN 使用相同的页面但在不同的地方呈现,您只需要重新加载数据让每个人都知道有人评论或回复或消息中的任何内容。

2º - UI 由您选择,看看什么最适合您;)

请享用 ;)

于 2012-11-13T17:22:18.037 回答
2

我认为其他答案很复杂。对我来说,你似乎需要

   <div class="rowContainer">
      <div style="float:right">
         <uc:YourControl>
      </div>
   <div>

用于可扩展控件的行。当用户快速展开按钮页面时,会将另一个 YourControls 添加到 div.rowContainer 与父另一个具有浮动权的 div:

   <div class="rowContainer">
      <div style="float:right">
         <uc:YourControl>
      </div>
      <div style="float:right">
         <uc:YourControl>
      </div>
   <div>

当用户将添加另一行消息时,使用 div.rowContainer 添加另一个行容器:

   <div class="allMessagesContainer">
      <div class="rowContainer">
         <div style="float:right">
            <uc:YourControl>
         </div>
      <div>
      <div style="clear:both">
      <div class="rowContainer">
         <div style="float:right">
            <uc:YourControl>
         </div>
      <div>
   </div>

clear:both很重要,因为将浮动中断到下一行。我认为创建 3 个控件会很好:1.<uc:YourControl>使用单个消息 2. 控件从轻松附加消息到左侧,只需在同一控件内div.rowContainer添加另一个到服务器即可。3.控制所有消息,以便在下一行轻松添加消息。只需向容器添加另一个行控件。divfloat:right

控件的浮动也不会强制用户无限向左滚动。这不好,他们讨厌那样。

还有一个:asp.net 不适合这类网站。事情很快变得复杂起来。如果嵌套控件之一中的按钮应该在 Page 上执行某些操作怎么办?您是否应该向 Page 添加方法并将其强制转换为控件?((MyPage)Page).DoSomeWork() 如果页面类型发生变化怎么办?创建界面?也许代之以委托。把他放在哪里?在页面中?控制?创建事件并通过所有父母对其进行冒泡?一些上下文类?

更不用说重新初始化动态控件树的必要性,每次回发都是发送的。

于 2012-11-17T09:27:13.393 回答
2

1 味精 2 味精响应 ...等...

...你可以这样做:)

于 2013-01-23T10:28:12.733 回答
1

说到 CSS,简单更好。

我的建议,如果您必须在布局方面采用这种方式:

<div class="row">
    <div class="message"><FirstMessage /></div>
    <div class="message"><ExpandedFirstMessage /></div>
</div>
<div class="row">
    <div class="message"><Reply /></div>
    ...etc...
</div>

您为每个“行”或扩展响应创建一个 div,使用“row.”类的 div。然后,每条消息都有自己的带有“消息”类的 div,使用以下 CSS:

.message {
    width: 200px; // or whatever size you want here
    height: 100px; // or whatever size you want here
    display: inline-block; // This is the important part!
    ...etc // your extra padding, margin, whatnot.
}

内联块允许您避免浮动和诸如此类的东西,这应该会使事情变得更简单。(作为奖励,具有 RTL 阅读顺序的人将自动为他们完成这项工作。)

现在,这是你的问题。

从您描述的图像来看,似乎任何人都可以回复任何消息,或展开任何消息;从逻辑上讲,这意味着您描述的网格布局可能无法正常工作。(例如,如果有人回复了扩展的第一条消息,而其他人扩展了对第一条消息的回复呢?您将不得不向竞争相同空间的用户控件发送消息。这将如何工作?)我建议实施不同的设计这将适应您的使用流程,除非您有更具体的计划。

我希望这个答案对你有所帮助。祝你好运。

于 2012-11-21T16:47:46.997 回答