最新要闻
- 2023高考今日落幕,多地公布志愿填报时间
- 团伙设下“首付购车”骗局,黄石两家4S店掉进陷阱
- 【环球新要闻】TheShy素质三连图火了,爆笑流酒桶登场,撞墙空大,随后拿下MVP
- 全球热文:这就是信心|优化营商环境 各地硬招、实招频出
- 【环球播资讯】伊藤美诚戴奥运金牌回母校,豪言:巴黎夺冠!79岁爷爷为她立碑!
- 12306买卧铺票可以在线选铺了!操作指南出炉:很方便
- 今热点:坚持不变!福岛核污染水排海设施下周一试运行:测试两周左右
- 优惠100元:可孚全自动电子血压计39元发车!30天无理由退货 全球即时看
- 解读2021款合创007,纯电中型SUV,续航643km,售价29.98万
- 当前头条:感冒发烧应吃什么食物(感冒发烧的患者可以吃什么食物)
- 2023年6月9日江苏省氯化铵价格最新行情预测
- 6月10日起,12306网站试行在线选铺服务
- 华南等地暴雨如注 长江中下游高温增多闷热加剧
- 重庆南川:“政企早茶会”解企业成长烦恼树发展信心
- 第12届金交会开幕,现场签约总金额超3500亿元
- 欣旺达创始人王明旺:明年量产钠离子电池
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
个人博客留言板功能实现
ZY知识库留言板功能实现
前言
因为这个博客是用的大佬的开源项目,我也是用自己的想法改了很多东西,虽然可能写的不是很好,但是我自己想要的效果实现了,开源项目不就是用来学习的嘛,所以不能一层不变,之前首页改版、评论功能我都没有写文章,这次抽空更新了留言板功能,来水一篇文章。
(资料图)
留言板地址:ZY知识库 · ZY - 留言板 (pljzy.top)
留言类和回复类
首先我创建了如下2个类,类型无非就是int、string、DateTime,这里就不做多的解释了
留言类
字段名 | 解释 |
---|---|
Id | 主键 |
Name | 留言者昵称 |
留言者邮箱 | |
Message | 留言内容 |
Created | 留言时间 |
回复类
字段名 | 解释 |
---|---|
Id | 主键 |
MessageId | 留言类外键 |
Name | 回复者昵称 |
回复者邮箱 | |
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.3
包CommentsJson
方法是用来处理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 @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") } } })
留言板效果图
结尾
上述内容就是对留言板功能的大体实现,总的来说,这是一个留言板的简单实现。
关键词:
个人博客留言板功能实现
2023高考今日落幕,多地公布志愿填报时间
团伙设下“首付购车”骗局,黄石两家4S店掉进陷阱
【财经分析】养老金融迎发展机遇期 保险行业大有可为
【环球新要闻】TheShy素质三连图火了,爆笑流酒桶登场,撞墙空大,随后拿下MVP
全球热文:这就是信心|优化营商环境 各地硬招、实招频出
【环球播资讯】伊藤美诚戴奥运金牌回母校,豪言:巴黎夺冠!79岁爷爷为她立碑!
12306买卧铺票可以在线选铺了!操作指南出炉:很方便
今热点:坚持不变!福岛核污染水排海设施下周一试运行:测试两周左右
优惠100元:可孚全自动电子血压计39元发车!30天无理由退货 全球即时看
解读2021款合创007,纯电中型SUV,续航643km,售价29.98万
当前头条:感冒发烧应吃什么食物(感冒发烧的患者可以吃什么食物)
2023年6月9日江苏省氯化铵价格最新行情预测
6月10日起,12306网站试行在线选铺服务
华南等地暴雨如注 长江中下游高温增多闷热加剧
重庆南川:“政企早茶会”解企业成长烦恼树发展信心
第12届金交会开幕,现场签约总金额超3500亿元
欣旺达创始人王明旺:明年量产钠离子电池
中方驳斥:无中生有、信口雌黄、恶意诋毁!
杯具!上海一小区电动车爆炸起火 家人惨被烧伤:网友吵翻为何电池拿回家充电
今年端午假期或成近五年最火端午:消暑纳凉游受青睐 全球即时看
华为获转让问界商标:可用于汽车等
奋进新征程兰台谱新篇 温州启动“6·9”国际档案日系列活动 热推荐
2023年6月9日山东省乙腈价格最新行情预测
qq号码注册机_qq注册码是什么怎么获得
24核M2 Ultra处理器性能跑分出炉 Intel/AMD笑了:苹果还嫩-世界资讯
今日精选:显卡销量崩了 出货量暴降背后:越来越贵降价不现实 英伟达一家独大
立定跳远技巧训练方法_你知道吗_世界快资讯
焦点要闻:Linux数据分析之九个给力的命令行工具
Oracle启动命令
微胖女孩,夏天怎么露肤才好看?
焦点要闻:卷疯!国产带头杀价 4TB SSD被杀至969元:闪存、性能没得说
这么多年终于等来了!今起12306试行在线选铺服务:自选上下铺
资讯推荐:一夜10大转会动态:皇马官宣新援加盟,阿森纳天价求购西汉姆队长
读改变未来的九大算法笔记08_并非万能的算法-最资讯
查肝功能多少钱?_查肝功能大概多少钱
热门看点:写出氯气与水反应的离子方程式_氯气与水反应的离子方程式为________________ 新制的氯水
天天观点:怎么更新word目录页码_word怎么更新目录的两种方法
厦钨新能06月09日被沪股通减持142.85万股 环球焦点
【全球快播报】孙燕姿发文纪念出道23周年:创作新作品与AI拼了!
口碑糟糕!美国超级大片《变形金刚7》国内上映1天 票房破亿了
北尘电池厂什么时候出 公测上线时间预告 环球观点
冯小刚有几个孩子啊_冯小刚有几个孩子
什么的小河蚌(什么的小河)
环球新消息丨ASP.NET Core MVC 从入门到精通之Html辅助标签补充及模型校验基础
琴葛蕾怎么复活的_琴格雷_全球资讯
宁王登陆LPL六周年,BLG送上“大礼”!小破站零封Up,斩获四连胜 前沿资讯
三星打印机卡纸怎么办视频_三星打印机卡纸怎么办-世界时讯
今年前5月中国水利建设完成投资较去年同期增长32.1%
《暗黑破坏神4》M站玩家评分:全平台都遭大量差评! 环球新视野
头皮发麻!男子塑料杯捉一只蟑螂 结果睡一晚变一窝
云南大象破门闯入居民家吃饭菜:不是第一次、无人机监控
AMD Zen4撕裂者露出獠牙:96核心寂寞无敌
首发价39999元 三星发布98英寸Q80Z巨幕电视:送电视、手机
常压锅炉压力表多少(常压锅炉压力是多少)
能量洪流幻象哪里出 能量洪流
今日最新!我的朋友死了
环球报道:奥特曼格斗进化3mac全灭s级通关打法(奥特曼格斗进化3全关卡S级通关攻略及注意事项)
惨不忍睹的意思 关于惨不忍睹的意思的介绍-天天通讯
德天空:多家沙特俱乐部正在关注马内|全球热头条
安徽工贸职业技术学院青年志愿者协会
焦点速读:股票行情快报:华大九天(301269)6月9日主力资金净买入8327.52万元
全球微动态丨今日hdmi可以输出5.1声道_4K家庭影院5.1声道输入输出怎么设置的方法教程
顾晴菲现在的照片_顾晴菲
动态:带着智能手机闯荡异世界 第二季 第十一集 异世界的姐姐,还有闪闪发光的初恋。 预告
Rust - 接口设计建议之灵活(flexible)
今日播报!数据库事务隔离级别
总台专访丨新任突尼斯驻叙大使:阿盟国家反对外部干涉 赞赏中国促和努力
2022单身戒指十大品牌排行榜_单身戒指哪个牌子好-全球关注
【天天聚看点】【国际漫评】戏精
每日动态!别人都考完了 为啥浙江高考考四天?看这表就知道了
亚洲最大地下综合交通枢纽建设取得新进展 最深处可达43米
首批国产榴莲预计将在本月上市 “水果之王”或迎来大降价
河南郑州发现3岁男孩患全球仅34例象鼻病 严重需借助于呼吸机才能维持生命
安徽一男子因酒驾被暂扣驾驶证 考四次科目一后拿驾照当天再次酒驾
*ST京蓝:公司股票交易被叠加实施其他风险警示
美国发布厄尔尼诺警报 专家认为明年全球平均气温或创新高
垃圾桶分类有哪几种?垃圾桶尺寸规格是多少?
栉怎么读?栉风沐雨是什么意思?
文博日历丨看一部跨越千年的“巨幕电影”
锦旗多少钱一副?锦旗尺寸大小多少合适?
十一法定节假日是几天?十一法定节假日高速是否免费?
文心一言 VS 讯飞星火 VS chatgpt (36)-- 算法导论5.3 6题 环球聚看点
门框的拼音怎么读?门框的尺寸一般是多少?
世界快报:“世界认可日”江苏主题活动启动——看江苏如何借认证检测之力,赋能产业升级?
遥感监测显示:九寨沟震后全域植被逐渐恢复 环球微头条
中金湖北科投光谷REIT正式成立|全球观点
百度:第三代昆仑芯明年初规模上市 大模型算力不成问题|环球热点评
第四大运营商发力:中国广电5G全面铺开
世界微头条丨3岁男孩患象鼻病全球仅34例:医生科普“象鼻宝宝”有多可怕
能实现“榴莲自由”吗?首批国产榴莲预计本月上市 世界快播
株洲石峰区:展示巾帼风采 秋瑾女子民兵排开展集训
当前观察:Web安全-渗透测试-基础知识06
油石比怎么算沥青含量_油石比计算沥青用量|天天要闻
每日焦点!湖北6月25日左右发布高考成绩 广大考生请认准权威渠道
中国巨石(600176.SH):拟参与中复连众与中材叶片整合|世界今热点
全球热消息:木瓜鉴赏:投我以木瓜,报之以琼琚
Uzi就差官宣了?EDG海报空个位置引热议 网友:无字暗示乌兹 世界热资讯
全球短讯!这外观如何?新款宝马X5L来了!动力更强 预计9月正式投产
摩尔线程国产游戏显卡正式支持OpenGL 4.0!曲面细分 效果惊艳