材料:邮箱+验证码
一般博客评论区制作
通常情况下,我们要准备Id和ParentId两个字段,
在取数据的时候,第一步先foreach评论表钟ParentI=0的字段,这表示基本楼层,
只有当ParentId≠0,才知道这是回复给楼层的。
写.cshtml代码的话,基本逻辑就是:
foreach(var parent in Model){
//渲染基础楼层
foreach(var child in Model){
//判定有没有子楼层
if(child.parentId==parentId){
//渲染子楼层
}
}
}
然后是你的表单提交逻辑,表单提交的时候,无论如何,你回复对象的Id,必然是从前台获得的,这个值会被更改,所以一般要注意检测合理性。
表单提交,你向后台提交 自己的name\email\website\content,同时要提交别人的Id,因为你可能是reply某人。
最后就是邮箱功能,邮箱最好是别人一提交表单,你就能收到提醒邮件,
别人回复别人,也自动发一份邮件过去,
这个时候,Ta回复的对象和你都收到了提醒邮件,一共两封。
简化模型(单位:楼):
1→0,需要发1封电子邮件;
2→1,需要发2封电子邮件;
3→2,需要发3封电子邮件。
0层代表自己,1→0代表博客下的第一个评论;
2→1代表2回复1,这时候2成为了楼中楼,
3→2就是在回复楼中楼。
解析:
点击Submit按钮
在1→0的情况下,需要给博主发邮件。
在2→1的情况下,需要给1发邮件,给博主发邮件。
在3→2的情况下,需要给2发邮件,给楼主发邮件,给博主发邮件。
通常情况下3→2的情况下,最好只给reply to 的对象发邮件,因为当楼层盖太多之后,楼主会被骚扰频繁,而且还都不是回复给楼主的。
但考虑到百度贴吧也是这么做的,即使是楼中楼回复楼中楼,楼主还是会被消息提醒,所以不变更。
最后的最后,考虑以下点击提交按钮的加载动画。
发邮件是异步进行的,程序逻辑首先会在0.5秒钟之内完成数据库的存储,但是邮件需要等待数秒以上才会返回结果,
那么我们应该在form上面加一个onsubmit的方法,让该方法执行loading动画,并在1秒之内自动刷新该页面。
刷新完成后,用户一定会看到自己的评论附加上去了,但实际上邮件的发送还在后台进行,这样对用户体验良好。
扩展阅读: