因为这个博客是用的大佬的开源项目,我也是用自己的想法改了很多东西,虽然可能写的不是很好,但是我自己想要的效果实现了,开源项目不就是用来学习的嘛,所以不能一层不变,之前首页改版、评论功能我都没有写文章,这次抽空更新了留言板功能,来水一篇文章。
(相关资料图)
留言板地址:ZY知识库 · ZY - 留言板 (pljzy.top)
首先我创建了如下2个类,类型无非就是int、string、DateTime,这里就不做多的解释了
| 字段名 | 解释 |
|---|---|
| Id | 主键 |
| Name | 留言者昵称 |
| 留言者邮箱 | |
| Message | 留言内容 |
| Created | 留言时间 |
| 字段名 | 解释 |
|---|---|
| Id | 主键 |
| MessageId | 留言类外键 |
| Name | 回复者昵称 |
| 回复者邮箱 | |
| Reply | 回复内容 |
| Created | 留言时间 |
然后我创建了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.3包CommentsJson方法是用来处理quill富文本编辑器传过来的内容,这里就不做解释了。
builder.Services.AddTransient
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 @Html.Raw(@Model.Message) @if (Model.Replies.Any()){ @await Html.PartialAsync("Widgets/MsgBoxReplyList",Model.Replies)}部分代码
$.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") } } })上述内容就是对留言板功能的大体实现,总的来说,这是一个留言板的简单实现。
关键词:
个人博客留言板功能实现 动态焦点 ZY知识库留言板功能实现 前言因为这个博客是用的大佬的开源项目,我也
全球头条:夕日红被绑在十字驾上_夕日红 1、她是动漫火影忍者里的人物,也是犬冢牙、油女志乃、日向雏田的老师
武艺 女朋友_武艺女朋友_每日播报 1、武艺有女朋友了。2、你们知道么? 我知道,你们死活也不相信武艺
如何一键修复albo1125.common.dll丢失 albo1125 common dll是一款Windows系统中必备的动态运行文件。如果在运
容量4500mAh、充电25W!三星Galaxy S23 FE电池曝光 据韩国安全认证机构safetykorea的公开数据显示,型号为EB-BS711ABY的智
斑驳的意思解释(斑驳的意思) 来为大家解答以上的问题。斑驳的意思解释,斑驳的意思这个很多人还不知
个人博客留言板功能实现 动态焦点 ZY知识库留言板功能实现 前言因为这个博客是用的大佬的开源项目,我也
债券型基金“风景独好” 超九成“赚钱” 【债券型基金“风景独好”超九成“赚钱”】今年以来,基金发行和业绩表
7744小游戏盒_7743小游戏 1、可能是一起的吧你的电脑肯定坏了。本文就为大家分享到这里,希望小
《皮卡堂过家家》_2144皮卡堂过家家 1、就把它打开。2、你可以玩4399皮卡堂,4399是一个无毒网站无害网站点
全球头条:夕日红被绑在十字驾上_夕日红 1、她是动漫火影忍者里的人物,也是犬冢牙、油女志乃、日向雏田的老师
“FOF一哥”离职 影响显现?基金发行遇冷 “冰点”之后行情怎么走?机构这样说 微动态 近期,某基金公司旗下连续两只FOF产品发行失败,让基金“发行遇冷”的
突发!广州发现两例猴痘病例!惊险一幕,两飞机相撞,载客超500人,碎片被捡走… 热点不断。据广东疾控官网,6月10日,广州市监测发现2例猴痘病例。此外
天天实时:武汉华大生命科学研究院揭牌 并与武汉超算中心签约 【武汉华大生命科学研究院揭牌并与武汉超算中心签约】武汉华大生命科学
美利达公路自行车推荐_美利达公路自行车官网 1、美利达山地车价格表美利达山地车做工优秀,配置精良,不光在国内拥
全球热门:江苏海洋大学教务管理系统官网_江苏海洋大学教务管理系统 1、是国家的规定每个系的收费标准都不一样。本文就为大家分享到这里,
武艺 女朋友_武艺女朋友_每日播报 1、武艺有女朋友了。2、你们知道么? 我知道,你们死活也不相信武艺
使用不当或引发肾衰竭!正确使用这类药物请牢记 前沿热点 武汉一男子连续使用退热栓剂引发急性肾衰近日,有媒体报道,武汉一名男
世界微动态丨火车计次票、定期票 如何购买使用 为进一步方便城市间人员乘车往来交流,满足广大旅客差异化出行需求,国
如何一键修复albo1125.common.dll丢失 albo1125 common dll是一款Windows系统中必备的动态运行文件。如果在运
霍尊前女友被移交检方,为900万搭上一生,小作文以后不好使了? 霍尊前女友陈露栽了,已经被移交检方了,后续的结果大概可以预测,等待
业绩之外,中兴通讯的ESG底色 2022年对于中兴来说颇为特殊。随着国内5G基础设施建设的大量铺开,同时
容量4500mAh、充电25W!三星Galaxy S23 FE电池曝光 据韩国安全认证机构safetykorea的公开数据显示,型号为EB-BS711ABY的智
全民体育健身(全民体育) 来为大家解答以上的问题。全民体育健身,全民体育这个很多人还不知道,
全球聚焦:黑天鹅蛋糕官网价格表(黑天鹅蛋糕) 来为大家解答以上的问题。黑天鹅蛋糕官网价格表,黑天鹅蛋糕这个很多人
斑驳的意思解释(斑驳的意思) 来为大家解答以上的问题。斑驳的意思解释,斑驳的意思这个很多人还不知
世界今亮点!dnf公会副本怎么打_dnf公会副本 你们好,最近小活发现有诸多的小伙伴们对于dnf公会副本怎么打,dnf公会
天天动态:百度外卖官网_百度外卖网上订餐 你们好,最近小活发现有诸多的小伙伴们对于百度外卖官网,百度外卖网上
august的由来_augus 1、 安格斯一个唯一无二的。本文就为大家分享到这里,希望小伙伴们会喜
高考收官:这一刻 让我抱抱你! 央广网沈阳6月9日消息(见习记者李子平)这一刻,不问结果,拼搏过后,
首台套50万千瓦冲击式水电机组项目开工 环球热门 今天(9日),大唐西藏扎拉水电站主体工程正式开工建设,项目配备首台
昔日荒山变为幸福“金山” 桃园变成农民增收“致富园” 贵州省铜仁市思南县的大河坝镇位于武陵山腹地,在脱贫攻坚期间,当地大
公羊肉和母羊肉能吃出来吗? 公羊肉和母羊肉不能吃出来。羊肉性温,助元阳,补精血,疗肺虚,益劳损
羊肉不能放姜?|头条 可以放姜,但不用太多。炖羊肉时生姜不要放得太多,否则生姜的辛辣味会
天天快资讯:看过来 5款机型迎来HarmonyOS 3.0智慧体验版本升级 6月10日,华为官方宣布,华为Mate50系列等5款机型率先迎来HarmonyOS3 0
为IPO项目保荐 还要重温高中化学?-全球微资讯 上证报记者发现,近期,多家拟IPO企业被监管问询到原材料采购和营业成
突发!广州发现两例猴痘病例!惊险一幕,两飞机相撞,载客超500人,碎片被捡走… 热点不断。据广东疾控官网,6月10...
天天速递!曲江报告:中美利差和VIX指数对我国短期资本流动的影响较小 在二季度经济恢复放缓背景下,市场...
焦点关注:北京首家茅台文化体验馆揭牌 【北京首家茅台文化体验馆揭牌】据...
暴雨蓝色预警:预计广西东南部沿海、广东南部沿海等地部分地区有大到暴雨-世界热消息 中央气象台6月11日6时继续发布暴雨...
怎样保存大米一年不坏?真空大米放了3—4年还能吃么? 怎样保存大米一年不坏?1、用锅煮花...
最新消息:河北省40幅摄影作品参加第三十四届华北摄影艺术展览 近日,第三十四届中国华北摄影艺术...
获奖名单公布!第十三届中国艺术节在河北雄安新区落下帷幕 9月15日晚,第十三届中国艺术节在...
2022北京时装周9月15日至22日将在线上线下举办多场活动 一年一度的北京时装盛典即将拉开帷...