加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

一步步搭建自己的博客 .NET版(2、评论功能)

发布时间:2020-12-15 21:24:32 所属栏目:asp.Net 来源:网络整理
导读:前言? ? ? 这次开发的博客主要功能或特点:? ? 第一:可以兼容各终端,特别是手机端。? ? 第二:到时会用到大量html5,炫

前言?

? ? 这次开发的博客主要功能或特点:? ? 第一:可以兼容各终端,特别是手机端。? ? 第二:到时会用到大量html5,炫啊。? ? 第三:导入博客园的精华文章,并做分类。(不要封我)? ? 第四:做个插件,任何网站上的技术文章都可以转发收藏 到本博客。

所以打算写个系类:《》

? ?

? ? 上一篇《》发表之后得到的效应还不错,得到了二十几个赞。然后建的QQ群 两天不到 就有了进三十来个人。大家在群里关于建站经验讨论也是十分热烈。由此可见,大家对拥有自己的独立空间 是多么的渴望。

? ? 这篇主要是分析 评论功能。在这里,不得不吐槽下 博客园的评论功能。

? ? 第一、对于阅读者。大家有没有在看评论的时候,看着看着有往上翻?特别是有些对骂的评论,都不知道是谁在骂谁。不得不往上翻那个@的人发的是什么。不知道 这句话 是 对谁的哪句话做的回复。虽然有“引用”功能,但也有很多人没有使用。

? ? 第二、对于博主。在回复各位园友时,点击回复 ,然后 跳到 最下方,然后评论框 自动出现@*** ?回复之后。想回复下一位,又要把滚动条拖上去。然后 又忘记 这个人是不是已经回复过了。又往下拖 看自己有没有回复过,或者有没有漏掉谁。如果评论够多的话 我相信 各位应该都这样的感觉,我的那个头 我的那个晕。

? ? 在这里 我就打算规避这类问题,像QQ空间的评论 就很爽,谁在和谁对话 一目了然。

表结构

? ? ? 对于这样的一个需求,没有做过的也许一时没有了头绪。这里最主要的关系就是,“引用”- 谁对谁说。是对哪条评论 展开的讨论。

? ? ? 其实我把表结构拿出来,相信大家就明白了。

? ? ? 这里 ?我再详细分析下每个字段。

? ? ? ID:表主键

? ? ? Content:评论的内容? ? ?

? ? ??CommentID:引用的评论内容的ID。

? ? ??BlogUsersId:用户ID

? ? ? BlogsId:博客ID

? ? ??ReplyUserID:引用的评论的用户ID。

? ? ? ReplyUserName:引用的评论的用户名。

? ? ? CommentSort:没用(本来以为会用到)

? ? ??ContentLevy:没用(本来以为会用到)

? ? ? ?这里要说明下 ? ?CommentID:引用的评论内容的ID。其实并非真的是评论内容ID 而是"父评论ID"。我们为了简单起见,把评论分成两种。

父评论,子评论。什么是父评论,子评论?父:初始评论,子:在父评论的基础上进行评论,或者子评论的基础上进行评论。(这里就不分 子子评论 ?子子子评论了。我想递归应该也可以做到,但不想那么复杂了)

? ? ? 那么上面还有一个字段没有解释:

? ? ??IsInitial ?是否是"父评论"

如图: ? ? ?

实现

? ? ?通过对表结构的简单分析,我相信 大家应该已经非常明白 我会怎么去实现了。

? ?第一、评论提交

BlogId = .Parse(Request.Form[ UserId = MySession.UserInfoSessioin.Id; CommentID = .Parse(Request.Form[ Content = Request.Form[ ReplyUserID = .Parse(Request.Form[ ReplyUserName = User = BLL.Common.CacheData.GetUserInfo().Where(t => t.Id == ( !== .IsNullOrEmpty(User.UserNickname) ?BLL.BlogCommentBLL comment = <span style="color: #0000ff;">new<span style="color: #000000;"> BLL.BlogCommentBLL();
comment.Add(
<span style="color: #0000ff;">new
<span style="color: #000000;"> BlogComment()
{
BlogUsersId
=<span style="color: #000000;"> UserId,BlogsId
=<span style="color: #000000;"> BlogId,Content
=<span style="color: #000000;"> Content,CommentID
=<span style="color: #000000;"> CommentID,ReplyUserID
=<span style="color: #000000;"> ReplyUserID,ReplyUserName
=<span style="color: #000000;"> ReplyUserName,IsInitial
= CommentID == -<span style="color: #800080;">1
<span style="color: #000000;">
});
comment.save();

? ? ? ?一目了然,其实就是一个对象存入数据库了。至于每个字段的取值,你想怎么取看你自己的。

? ?第二、加载评论

? ? ? 评论的加载 可能会比提交复杂那么一点。提交有前后 怎么去归类布局呢?

? ? ? 首先要对 父评论 的筛选,然后加载父评论 和 父评论下的子评论。感觉要进行多次数据库的查询,那么我们只能尝试尽可能少的查询。

? ? ? 下面来具体看实现代码。? ? ??

blogId = .Parse(Request.Form[ pageIndex = .Parse(Request.Form[= <,> dic = Dictionary<,> comObj = ( == PartialView(,comObj); dic.Add( PartialView(dic);? ? ??
  com.GetComment(blogId,pageIndex) 方法 根据 博客ID  和  第几页评论 做为参数,取评论数据,下面给出方法的详细实现:
List> GetComment( blogId,= List<> disCom = com.GetList<>(pageIndex,, total,t => t.IsInitial == && t.BlogsId ==,t => t.Id).Select(t => (pageIndex > total) listCom = com.GetList(t => disCom.Contains(t.CommentID) ||> ComObj = List> ini = listCom.Where(t => t.IsInitial == ).ToList(); (BlogComment item = CacheData.GetUserInfo().Where(t => t.Id == userobj = CacheData.GetUserInfo().Where(t => t.Id == ( !==

? ??上面进行了二次数据库查询,其余的时候 都是进行 数据集合的筛选。在上面的代码中 我们看到了 方法 GetCom(item,listCom)//?取 顶级评论 下的子评论

List GetCom(BlogComment com,List li = list.Where(t => t.CommentID ==

效果图和演示地址

? ? ? ? 在此实现的全部过程都已经分析完了。我们来看看效果图和演示地址。

? ? ? ? 效果图:

? ? ? ? 演示地址:?(界面丑是丑了点,后期再美化。如果有美工愿意免费合作,非常欢迎~~)

? ? ? ? 如果您对本篇文章感兴趣,那就麻烦您点个赞,您的鼓励将是我的动力。?当然您还可以加入QQ群:嗨 博客讨论。

? ? ? ? 如果您有更好的处理方式,希望不要吝啬赐教。

? ? ? ? 一步步开发自己的博客 .NET版系列:

? ? ? ? 本文链接:?


疑问

? ? ?我在构思开发博客的时候,有个疑问。那就是怎样更好的统计文章阅读量。

? ? ?我知道的方式:

? ? ?第一、通过Cookie。(缺点:如果要进行访问量排行的话,可以人为清理cookie,恶意刷新访问量)

? ? ?第二、通过客户端取得IP(缺点:1.如果访问量大的话,每次插入数据库之前都要先查询是否存在。2.现在我们大多是公用外网IP,无法统计独立访客)

? ? ?疑问:1.cnzz的独立访客(UV)是怎么统计的。2.博客园的文章阅读量是怎么统计的。(进过测试,文章刷新第二遍的时候可以看到 阅读量 加一 ,然后清理cookie 后刷新 阅读量 加一,然后不管怎么刷 都没反应了)

? ? ?如果实在是找不到好的解决方案,我打算用 IP+系统版本+浏览器版本号 作为“联合主键”,如果“主键”24小时内重复两次以上,则不统计,如果cookie存在也不统计。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读