前些日子写了篇博客,网友给予了很多的评论,在查看及回复评论的过程中,也是发现博客园现有回复的不太好,举例如下,现有的回复如下图所示:

,这里根本看不出来tony_ontheway说了什么,还要我一个一个找,哦,原来他是在第N页第N行说了这个,所以非常的不方便。

所以今天我把网易盖楼回复的实现原理以及实例Demo贴出,望博友们顶起来,让博客园整改一下,必竟,博客园是我们的大本营,是我们学习知识的地方。这里高手如云,精英荟萃,我们的大本营也不能太差,是吧。我们让博客园改进,也是为自己创建良好的环境,所以,博友们,顶起来,吼起来,一起唤起博客园的注意。

实现盖楼回复大致分三部。

第一步:建数据库表,这个表需要有ID及父ID.

第二步:添加回复,添加回复的关键代码如下:

var comment = StringExtension.ChangeStr(collection["comment"]);var bbsId = collection["comment_post_ID"].ToString();var comment_parent = collection["comment_parent"].ToString();//$引用3楼 测试盖楼回复。。。if (comment.IndexOf("$引用") >= 0){comment = comment.Substring(comment.IndexOf("楼") + 1, comment.Length - comment.IndexOf("楼") - 1);}else{comment_parent = "0";}NetFavCommentModel bbsComment = new NetFavCommentModel{commentContent = comment,NetFavId = Convert.ToInt32(bbsId),commentParentId = Convert.ToInt32(comment_parent),commentAddTime = DateTime.Now                        };
netFavCommentRepository.AddNetFavComment(bbsComment);

第三步:查询回复,并以盖楼方式显示。关键代码如下。

            KeyValuePair<Pagination, IList<NetFavCommentModel>> bbsComment = netFavCommentRepository.NetFavCommentPagination(pagin, condition);int i = 1;foreach (var item in bbsComment.Value){item.louId = i++;item.commentContent = GetContent(item, bbsComment.Value.ToList());}ViewBag.bbsComment = bbsComment.Value;ViewBag.bbsCommentCount = bbsComment.Value.Count();

其中GetContent很重要,循环查询,将盖楼内容全部显示出来。

相关代码如下:

       #region 盖楼回复// 根据当前的Comment得到HTML输出protected string GetContent(object objComment, List<NetFavCommentModel> list){string output = "";NetFavCommentModel cmt = (NetFavCommentModel)objComment;                    // 获取当前评论List<NetFavCommentModel> quoteList = new List<NetFavCommentModel>();    // 创建当前评论所引用的评论列表
AddComment(list, quoteList, cmt);        // 为当前评论的引用列表添加项目//quoteList.Sort(NetFavCommentModel.GetComparer());    // 对列表排序,顺序排列foreach (NetFavCommentModel quote in quoteList)    // 生成引用的评论列表
            {output = String.Format("<div>{0}<span>网友 {1}的原贴:</span><br />{2}</div>",output, quote.commentAddMan, quote.commentContent);}// 添加当前引用output = String.Format("<div class='comment'><p class='title'><span>{0}楼{1} 发表</span>网友:{2}</p>{3}<p>{4}</p>" +"<p style='text-align:right;'><a class='comment-reply-link' href='#comment' " +"οnclick='addQuote({0},{5});'>回复</a></p></div>",cmt.louId, cmt.commentAddTime, cmt.commentAddMan, output, cmt.commentContent, cmt.commentId);return output;}// 向quoteList中添加 符合条件的Commentprotected void AddComment(List<NetFavCommentModel> list, List<NetFavCommentModel> quoteList, NetFavCommentModel cmt){if (cmt.commentParentId != 0){NetFavCommentModel find = list.Where(n => n.commentId == cmt.commentParentId).FirstOrDefault();quoteList.Add(find);// 递归调用,只要CommentId不为零,就加入到引用评论列表
                AddComment(list, quoteList, find);}elsereturn;}#endregion

完成后截图如下:

最后给出Demo示例网址 。本项目的源码就不提供了,提供一套原生版Demo,有需要请下载。

转载于:https://www.cnblogs.com/ushou/archive/2013/03/08/2948402.html

网易盖楼回复的简易实现相关推荐

  1. 网易盖楼 java_网易盖楼回复的简易实现

    前些日子写了篇博客,网友给予了很多的评论,在查看及回复评论的过程中,也是发现博客园现有回复的不太好,举例如下,现有的回复如下图所示: ,这里根本看不出来tony_ontheway说了什么,还要我一个一 ...

  2. DIV+CSS样式---网易盖楼

    网易的评论样式做的好,我天天盖楼,找了个DIV样式,而且以用动态的测试成功,下面是样式代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T ...

  3. 网易 盖楼 实现_网易严选宣布“退出鼓吹过度消费的双十一”网友:逆向营销...

    网易严选官方微博11月4日晚发文宣布退出今年的双十一大战.网易严选表示:"要退出这个鼓吹过度消费.为数字狂欢的双十一".该微博发出后,引起了广大网友的热议. 网易严选在微博中表示, ...

  4. 网易评论盖楼php,DedeCMS评论引用美化:仿腾讯/网易盖楼效果

    关于DedeCMS的使用教程,烈火介绍了很多,相信各位站长都有所了解,今天我们来看一个美化评论样式,实现仿腾讯.网易.迅雷等的盖楼效果,这是笔者前段时间就美化了的,当初烈火只是仿了腾讯的样式,在盖楼时 ...

  5. php实现贴吧功能,贴吧/盖楼的技术实现(PHP)

    2015年3月5日 14:36:44 目标, 实现类似百度贴吧的基本功能 实现: 1. 存储, 将数据库(MYSQL)当作一个大的结构体数组, 每一条记录用作为一个结构体, 记录父帖信息, 子帖信息, ...

  6. python 贴吧盖楼_ es6 + canvas 开源 盖楼小游戏 完整代码注释 从零教你做游戏(一)...

    盖楼游戏 一个基于 Canvas 的盖楼游戏 Demo 预览 手机设备可以扫描下方二维码 github Game Rule 游戏规则 以下为默认游戏规则,也可参照下节自定义游戏参数 每局游戏生命值为3 ...

  7. 类似论坛评论和回复(评论盖楼)-android

    高仿网易评论列表效果之界面分析 -- http://blog.csdn.net/aigestudio/article/details/40891457 网易新闻客户端评论列表盖楼效果 -- http: ...

  8. 网易跟贴,盖楼十年。背后的机制与匠心

    从03年到13年,网易跟帖已经活了10年.能够得到众多挑剔网友的认可,从来都不是一件容易的事情,但网易跟帖做到了,凭什么? <网易跟贴不是一天建成的,作为一款互联网产品,网易跟贴甚至在很长时间里 ...

  9. 仿网易新闻评论“盖楼”效果实现

    前言 各位应该对黄易新闻比较熟悉,其中评论区一般都会出现一些盖楼的神评论,今天的主题就是仿照做一个有盖楼效果的评论列表. 首先上图给大家看下效果: 思路 数据结构设计 首先分析看下评论的结构,仔细观摩 ...

最新文章

  1. 庆祝一下,基于JXTA的P2P文件共享传输文件测试成功。
  2. 串结构练习——字符串匹配 解题报告
  3. Spark详解(十一):Spark运行架构原理分析
  4. 选择加冒泡排序法与找鞍马之总结与感受
  5. dnf mysql数据库密码,CentOS7使用dnf安装mysql的方法
  6. c++ 函数返回引用
  7. Western Digital使用5400 rpm级硬盘使所有人感到困惑
  8. Linux系统学习----前言
  9. python求数组最大值_Python算法与数据结构--求所有子数组的和的最大值
  10. intellij2019.1 破jie不了的解决办法
  11. 代码编译突然变缓慢问题解决办法(codeblock)
  12. 可持久化数据结构加扫描线_结构化光扫描
  13. Redis使用不当导致应用卡死
  14. vue的双向数据绑定的原理
  15. 情人节,怎么同时约会女神和女朋友
  16. MySQL 数据库双向同步复制
  17. java8 中的时间和数据的变化
  18. 微信小程序微商城(二):电商首页轮播、分类导航和新品特卖实现
  19. c++十六进制转十进制_二、八、十、十六进制转换不用计算,Excel 进制转换函数大全奉上...
  20. java 文字水印 旋转_java实现倾斜水印铺满整张图

热门文章

  1. Shuffle 相关
  2. jsp自定自定义标签
  3. 《Arduino实战》——第1章 你好Arduino
  4. 【前端】:jQuery上
  5. [LeetCode] Count Primes
  6. NSTimer用法,暂停,继续,初始化
  7. Tomcat 5.5 配置 MySQL 数据库连接池
  8. 《网络攻防实践》第二周作业
  9. Mars 算法实践——人脸识别
  10. 超实用的58个office快捷键汇总,办公室人员必备!