个人博客留言板功能实现_新视野 - 行业资讯 -

当前位置:首页  >  行业资讯  > 正文

个人博客留言板功能实现_新视野

个人博客留言板功能实现_新视野
2023-06-11 10:10:17 来源:博客园

ZY知识库留言板功能实现

前言

因为这个博客是用的大佬的开源项目,我也是用自己的想法改了很多东西,虽然可能写的不是很好,但是我自己想要的效果实现了,开源项目不就是用来学习的嘛,所以不能一层不变,之前首页改版、评论功能我都没有写文章,这次抽空更新了留言板功能,来水一篇文章。

留言板地址:ZY知识库 · ZY - 留言板 (pljzy.top)


(资料图)

留言类和回复类

首先我创建了如下2个类,类型无非就是int、string、DateTime,这里就不做多的解释了

留言类

字段名解释
Id主键
Name留言者昵称
Email留言者邮箱
Message留言内容
Created留言时间

回复类

字段名解释
Id主键
MessageId留言类外键
Name回复者昵称
Email回复者邮箱
Reply回复内容
Created留言时间

Service层实现

然后我创建了IMessagesService接口类,列举部分如下:

using msg = Personalblog.Model.Entitys.Messages;public interface IMessagesService{    //新增留言    Task SubmitMessageAsync(msg messages);    //查询所有留言,分页列表    IPagedList GetAll(QueryParameters param);}

然后用MessagesService类实现这个接口类:

public class MessagesService:IMessagesService{    private readonly MyDbContext _myDbContext;    public MessagesService(MyDbContext myDbContext)    {        _myDbContext = myDbContext;    }    public async Task SubmitMessageAsync(Messages messages)    {        StringBuilder sb = CommentSJson.CommentsJson(messages.Message);        messages.Message = sb.ToString();        messages.created_at = DateTime.Now;        await _myDbContext.Messages.AddAsync(messages);        await _myDbContext.SaveChangesAsync();        return messages;    }    public IPagedList GetAll(QueryParameters param)    {        return _myDbContext.Messages.Include(m => m.Replies).ToList().ToPagedList(param.Page, param.PageSize);    }}

IPagedList是一个分页插件,用NuGet下载X.PagedList/8.4.3CommentsJson方法是用来处理quill富文本编辑器传过来的内容,这里就不做解释了。

配置文件依赖注入

builder.Services.AddTransient();

Controller层实现

public class MsgBoardController : Controller{    private readonly IMessagesService _messagesService;    public MsgBoardController(IMessagesService messagesService)    {        _messagesService = messagesService;    }    // GET    public async Task Index(int page = 1, int pageSize = 10)    {        MsgBoardList msgBoardList = new MsgBoardList()        {            PagedList = _messagesService.GetAll(new QueryParameters            {                Page = page,                PageSize = pageSize            }),            ...        };        return View(msgBoardList);    }    ///     /// 新增留言    ///     ///     ///     [HttpPost]    public async Task SubMessage([FromBody]Messages messages)    {        if(messages.Message == null || messages.Message == "")            return new ApiResponse(){Data = "请输入留言内容",Message = "请输入留言内容",StatusCode = 422};        if(messages.Name == null || messages.Name == "")            return new ApiResponse(){Message = "请输入昵称~",StatusCode = 422};        if (messages.Email == null || messages.Email == "")            return new ApiResponse(){Message = "请输入邮箱~",StatusCode = 422};        bool isValid = CheckEmail.CheckEmailFormat(messages.Email);        if (!isValid)        {            return new ApiResponse(){Message = "邮箱格式错误~",StatusCode = 422};        }        try        {            return new ApiResponse(){Data = GetHtml(await _messagesService.SubmitMessageAsync(messages)),Message = "留言成功",StatusCode = 200};        }        catch (Exception e)        {            return new ApiResponse() { Data = "服务器异常!", Message = "服务器异常!", StatusCode = 500 };        }    }}

因为是MVC项目所以控制器继承Controller类,然后后台管理的接口则是继承ControllerBase用于实现Restful风格接口。

前端部分实现

@foreach (var m in Model.PagedList) { @await Html.PartialAsync("Widgets/MsgBoxList",m) }

分布视图MsgBoxList用于显示留言

分布视图MsgBoxReplyList用于显示该留言是否有人回复

MsgBoxList

@model Personalblog.Model.Entitys.Messages
@Model.created_at @Model.Name
@Html.Raw(@Model.Message)
@if (Model.Replies.Any()){ @await Html.PartialAsync("Widgets/MsgBoxReplyList",Model.Replies)}

利用ajax请求发送留言

部分代码

$.ajax({            url:"/MsgBoard/SubMessage/",            type:"post",            data:JSON.stringify({                "Name":""+Name+"",                "Email":""+Email+"",                "Message":""+Content+""            }),            contentType: "application/json",            success:function (data){                if (data.statusCode === 200){                    alert(data.message, "success")                     const CommentList = document.getElementById("CommentList")                    const html = data.data                    CommentList.insertAdjacentHTML("beforeend", html);                    clearInput()                }else{                    alert(data.data, "danger")                }                 $("#btnComent").prop("disabled", false);             },            error:function(xhr,status,error){                 $("#btnComent").prop("disabled", false);                  if (xhr.status === 429){                    alert("请求过于频繁,请稍后再试。","warning")                }else if (xhr.status === 422){                    alert(xhr.responseJSON.message,"warning")                 }                else{                    alert("服务器异常,请稍后再试!!!","danger")                }            } })

留言板效果图

结尾

上述内容就是对留言板功能的大体实现,总的来说,这是一个留言板的简单实现。

标签:

(责任编辑:news01)
成都高新区“数字化转型背景下的课堂教学变革系列活动”首场展示会在芳草小学举办

成都高新区“数字化转型背景下的课堂教学变革系列活动”首场展示会在芳草小学举办

2023年6月9日,成都高新区“数字化转型背景下的课堂教学变革系列活动”
06-10 05:53:44
要闻速递:外交部:美英澳三国口口声声要遵守以规则为基础的国际秩序 却露骨地搞双重标准

要闻速递:外交部:美英澳三国口口声声要遵守以规则为基础的国际秩序 却露骨地搞双重标准

外交部:美英澳三国口口声声要遵守以规则为基础的国际秩序却露骨地搞双
06-09 23:44:25
每日热门:苏丹冲突双方激烈争夺战略要地 民间组织呼吁立即停止战争

每日热门:苏丹冲突双方激烈争夺战略要地 民间组织呼吁立即停止战争

苏丹武装部队和快速支援部队的武装冲突始于4月15日,冲突最早在喀土穆
06-09 21:44:36
环球观焦点:2023年6月9日异丙醚价格最新行情预测

环球观焦点:2023年6月9日异丙醚价格最新行情预测

中国报告大厅2023年6月9日异丙醚价格最新走势监测显示:济南铭威化工有
06-09 20:06:16
贵州多部门联合开展“护松2023”省级执法行动

贵州多部门联合开展“护松2023”省级执法行动

新华网贵阳6月9日电(卢志佳)为打击涉松材线虫病疫木违法犯罪行为,6
06-09 19:04:04
今日报丨天龙八部怀旧明教加点(天龙八部明教怎么加点)

今日报丨天龙八部怀旧明教加点(天龙八部明教怎么加点)

来为大家解答以上的问题。天龙八部怀旧明教加点,天龙八部明教怎么加点
06-09 18:05:53
陈小同横手究竟有没有_陈小同现在做什么|焦点速读

陈小同横手究竟有没有_陈小同现在做什么|焦点速读

1、和应采儿结婚后正甜蜜着呗!。本文就为大家分享到这里,希望小伙伴们
06-09 16:40:54
资讯:sfonline身法_sf online

资讯:sfonline身法_sf online

1、蹲下再按跳要比跳起来再蹲下跳得高有些时候跳不上去就要跑几步再回
06-09 15:58:30
业财提效80%,中国金茂这样做财税一体化升级

业财提效80%,中国金茂这样做财税一体化升级

中国数字经济呈现高速增长趋势,迈入存量时代的中国房地产市场集中度趋
06-09 15:42:44
今日热讯:藩镇割据是什么意思秒懂百科(藩镇割据是什么意思)

今日热讯:藩镇割据是什么意思秒懂百科(藩镇割据是什么意思)

镇割据是什么意思秒懂百科,藩镇割据是什么意思这个问题很多朋友还不知
06-09 15:18:43
华硕即将发布Zenfone 10:为游戏玩家带来更畅快的手机体验-今日热讯

华硕即将发布Zenfone 10:为游戏玩家带来更畅快的手机体验-今日热讯

华硕从最初的Zenfone进军到智能手机领域,经历了和合作伙伴Intel退出手
06-09 14:52:25
锂电材料产业已进入过剩周期 出海和储能市场将成锂电材料竞争新战场|快讯

锂电材料产业已进入过剩周期 出海和储能市场将成锂电材料竞争新战场|快讯

锂电池材料企业目前普遍面临现金流收紧,材料付款账期延长等多重挑战,
06-09 14:24:18
施耐德接触器型号d系列和n系列(施耐德接触器型号) 观热点

施耐德接触器型号d系列和n系列(施耐德接触器型号) 观热点

今天小编岚岚来为大家解答以上的问题。施耐德接触器型号d系列和n系列,
06-09 12:57:37
厦门有什么好的大学嘛理工院是几本 每日视点

厦门有什么好的大学嘛理工院是几本 每日视点

1、厦门有什么好的大学分别是:会计学专业、英语专业、土木工程专业、
06-09 11:58:37
猪价后市如何?牧原股份、新希望等龙头企业“谨慎乐观”看待猪价走势!

猪价后市如何?牧原股份、新希望等龙头企业“谨慎乐观”看待猪价走势!

近日,牧原股份、新希望、温氏股份等龙头企业纷纷披露5月生猪销售简报
06-09 11:45:41
国家自然基金申请流程(国家自然基金申报入口)

国家自然基金申请流程(国家自然基金申报入口)

今天小编岚岚来为大家解答以上的问题。国家自然基金申请流程,国家自然
06-09 11:29:59
董家大院_关于董家大院的简介

董家大院_关于董家大院的简介

1、董家大院位于天津市杨柳青镇,古朴壮观,构思巧妙,浓缩着深厚的文
06-09 11:01:28
关于4000年第一美女鞠婧祎退出SNH48是真的吗的相关信息

关于4000年第一美女鞠婧祎退出SNH48是真的吗的相关信息

1、kiku从四八系组合撤军是真的吗?怀特黑平拘留了队友黄婷婷。就在昨
06-09 10:54:12
评论丨夏子科:兰芷探幽——新世纪洞庭湖区域文学论 世界看热讯

评论丨夏子科:兰芷探幽——新世纪洞庭湖区域文学论 世界看热讯

第五届常德原创文艺奖获奖作品:兰芷探幽——新世纪洞庭湖区域文学论夏
06-09 10:21:04
世界今日报丨算死草粤语电影(算死草粤语)

世界今日报丨算死草粤语电影(算死草粤语)

死草粤语电影,算死草粤语这个问题很多朋友还不知道,来为大家解答以上
06-09 09:46:13
当前热讯:论文怎么引用别人的话(论文引用的话怎么标注)

当前热讯:论文怎么引用别人的话(论文引用的话怎么标注)

文怎么引用别人的话,论文引用的话怎么标注这个问题很多朋友还不知道,
06-09 09:20:31
焦点热议:小米12pro天玑版最新评测

焦点热议:小米12pro天玑版最新评测

小米12Pro天玑版是小米12系列的新机,相比骁龙8的版本,小米12Pro天玑
06-09 09:05:13
全球播报:打造北方果品博览园 人民银行运城市中支提供便利化金融服务助力果业高质量发展

全球播报:打造北方果品博览园 人民银行运城市中支提供便利化金融服务助力果业高质量发展

山西省运城市是果业大市,被称作“北方果品博览园”。2022年底,运城市
06-09 09:02:36
世界信息:包钢股份:钪的提取与应用正处于实验室研究阶段

世界信息:包钢股份:钪的提取与应用正处于实验室研究阶段

尊敬的投资者您好,钪的提取与应用,目前处于实验室研究阶段。感谢您的
06-09 09:02:33
天天即时:茅台集团董事长丁雄军调研茅台酒五轮次生产:严把基酒质量关

天天即时:茅台集团董事长丁雄军调研茅台酒五轮次生产:严把基酒质量关

茅台集团董事长丁雄军调研茅台酒五轮次生产:严把基酒质量关:6月8日,
06-09 09:00:13
凝聚汽车产业高质量发展智慧 2023中国汽车重庆论坛开幕

凝聚汽车产业高质量发展智慧 2023中国汽车重庆论坛开幕

人民网北京6月8日电(焦磊)6月8日,以“在变革时代塑造行业未来”为主
06-09 08:59:54
每日简讯:申请个人贷款需要注意哪些问题_申请个人贷款

每日简讯:申请个人贷款需要注意哪些问题_申请个人贷款

贷款申请人群,是商业银行对服务对象的选择,也就是商业银行根据自身的
06-09 08:47:12
热感冒的主要表现症状有哪些_热感冒的主要表现症状

热感冒的主要表现症状有哪些_热感冒的主要表现症状

1、热感冒”症状主要表现为:发热、头昏或头痛、咽痛、流清鼻涕、口干舌
06-09 08:36:35
直击股东大会 | 老百姓总裁王黎:随着越来越多药店纳入门诊统筹,总体上这一政策对药房生意利好

直击股东大会 | 老百姓总裁王黎:随着越来越多药店纳入门诊统筹,总体上这一政策对药房生意利好

◎老百姓总裁王黎表示,门诊统筹医保这一政策代表药店将更多地承担降低
06-09 08:11:55
Uzi即将重新连接!无限接近EDG!957圣枪哥多人证实! 天天即时

Uzi即将重新连接!无限接近EDG!957圣枪哥多人证实! 天天即时

在这场比赛打完,很多EDG粉丝就开始怀念以前有“老公viper”的日子,然
06-09 08:01:43

为您推荐

精彩推送