任何人都知道如何创建一个线程/嵌套评论系统?我想学习如何为我正在处理的博客做到这一点。我根本找不到任何有用的东西。肯定有人知道它是如何完成的。
3 回答
很难相信,经过 8 年的 ASP.NET,没有人费心写一篇简单的文章或教程,说明如何完成数百万博客上如此常用的线程评论之类的东西。搜索引擎像往常一样只产生垃圾。再说一次,谷歌是一个毫无价值的你知道的。
这就是为什么 asp.net 需要这么长时间来学习的原因。并不是说它是脑部手术,只是因为信息不存在,因此无法超越书中的基本内容。
我花了一整天的时间思考这个问题,最后解决了这个问题,使用一个表来评论,两个存储过程分别处理评论和回复,一个列表视图用于显示缩进的评论准确地属于它们的位置,另一个列表视图用于评论表单。最重要的是,线程的深度没有限制,并且评论被缓存。
在我的评论数据库表中,我创建了一个新列,用于存储在存储过程中计算的排序值。对于评论,排序值设置为等于其自己的评论 id 值,对于评论回复,该值设置为等于父排序 id 与它自己的评论 id 连接,并用点分隔。如果排序 id 没有点,则它是顶级注释。一点等于一级深度,二等于两级深度等。
因此,我必须编写的唯一代码是两个简单的存储过程和一点 C# 来获取点数并为缩进分配适当的 css 值。我不需要多个带有外键、父子 ID 关系、复杂代码或任何由少数真正愿意在论坛上回答的人通常建议的奇异建议的表。
快速,高效,工作起来就像一个魅力。常识规则!
如果您正在接受编辑器的建议,那么使用WMD 怎么样:Wysiwym Markdown Editor
WMD 是一个简单、轻量级的 HTML 编辑器,用于博客评论、论坛帖子和基本内容管理。您可以使用一行代码将 WMD 添加到任何文本区域。添加多行的实时预览。WMD 适用于几乎所有现代浏览器,现在完全免费使用。
至于数据模型,除其他考虑因素外,您还必须决定评论嵌套的深度。
public interface IComment
{
public int ID;
public string Body;
public string OwnerID;
public DateTime CreatedOn;
...
}
考虑一下您必须在此处导航的一些问题。垃圾邮件、注册、规模等。
如果您想利用一些预先构建的解决方案,请考虑:
Ment-O-Matic - 允许 ASP.NET 平台的用户轻松地将评论功能添加到现有博客或类似的基于 Web 的软件中。警告!.NET 1.1
从CodePlex的任何博客项目中汲取灵感。