老司机91精品网站在线观看_久久69精品久久久久久hb_成人欧美在线观看_免费一级日本c片完整版

首頁>消費 > 正文

環(huán)球資訊:個人博客留言板功能實現(xiàn)

2023-06-10 13:59:02    出處:博客園

ZY知識庫留言板功能實現(xiàn)

前言

因為這個博客是用的大佬的開源項目,我也是用自己的想法改了很多東西,雖然可能寫的不是很好,但是我自己想要的效果實現(xiàn)了,開源項目不就是用來學(xué)習(xí)的嘛,所以不能一層不變,之前首頁改版、評論功能我都沒有寫文章,這次抽空更新了留言板功能,來水一篇文章。


(資料圖片)

留言板地址:ZY知識庫 · ZY - 留言板 (pljzy.top)

留言類和回復(fù)類

首先我創(chuàng)建了如下2個類,類型無非就是int、string、DateTime,這里就不做多的解釋了

留言類

字段名解釋
Id主鍵
Name留言者昵稱
Email留言者郵箱
Message留言內(nèi)容
Created留言時間

回復(fù)類

字段名解釋
Id主鍵
MessageId留言類外鍵
Name回復(fù)者昵稱
Email回復(fù)者郵箱
Reply回復(fù)內(nèi)容
Created留言時間

Service層實現(xiàn)

然后我創(chuàng)建了IMessagesService接口類,列舉部分如下:

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

然后用MessagesService類實現(xiàn)這個接口類:

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富文本編輯器傳過來的內(nèi)容,這里就不做解釋了。

配置文件依賴注入

builder.Services.AddTransient();

Controller層實現(xiàn)

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 = "請輸入留言內(nèi)容",Message = "請輸入留言內(nèi)容",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 = "服務(wù)器異常!", Message = "服務(wù)器異常!", StatusCode = 500 };        }    }}

因為是MVC項目所以控制器繼承Controller類,然后后臺管理的接口則是繼承ControllerBase用于實現(xiàn)Restful風(fēng)格接口。

前端部分實現(xiàn)

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

分布視圖MsgBoxList用于顯示留言

分布視圖MsgBoxReplyList用于顯示該留言是否有人回復(fù)

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請求發(fā)送留言

部分代碼

$.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("服務(wù)器異常,請稍后再試?。?!","danger")                }            } })

留言板效果圖

結(jié)尾

上述內(nèi)容就是對留言板功能的大體實現(xiàn),總的來說,這是一個留言板的簡單實現(xiàn)。

關(guān)鍵詞:

相關(guān)內(nèi)容

消費
產(chǎn)業(yè)
強者恒強,江鈴福特全順何以持續(xù)領(lǐng)跑輕客市場? 如果想購買一輛輕客車型,俯瞰全球汽車市場,相信江鈴福特全順定會成為多數(shù)人的首選,
我們的鄉(xiāng)村一如既往的平靜 太陽攀上東邊山包,山嶺上輕紗一樣彌漫的稀薄霧氣化作水汽,將東山清洗了一遍,披上太
還在為輔導(dǎo)孩子學(xué)習(xí)發(fā)愁?一臺科大訊飛AI學(xué)習(xí)機T10就夠了 每一個新學(xué)期的開始,家長都會操碎了心,從準(zhǔn)備新的文具到接送上下學(xué),再到輔導(dǎo)課后學(xué)
新品亮相,方案升級,吉之美上海雙展完美收官,載譽滿滿! 5月29日至6月7日,好戲連臺,2023上海國際酒店及餐飲業(yè)博覽會和第十五屆上海國際水展
基金
老司机91精品网站在线观看_久久69精品久久久久久hb_成人欧美在线观看_免费一级日本c片完整版

      欧美一区二区日韩| 中文字幕中文字幕在线一区| |精品福利一区二区三区| 日本伊人午夜精品| 91网站在线播放| 亚洲一区二区三区中文字幕| 777色狠狠一区二区三区| 亚洲天堂av一区| 激情综合一区二区三区| 欧美国产禁国产网站cc| 欧美在线短视频| 中文天堂在线一区| 久久99国产精品麻豆| 亚洲国产精华液网站w| 欧美体内she精高潮| 国产精品久久久久婷婷二区次| 免费不卡在线视频| 日本一区二区视频在线| 精品视频色一区| 自拍偷拍亚洲激情| 国产成人在线网站| 亚洲一级片在线观看| 2020国产精品久久精品美国| 日韩高清一区在线| 国产欧美一区二区精品性色超碰| 在线精品亚洲一区二区不卡| 国产精品视频麻豆| 国产一二精品视频| 亚洲最新视频在线播放| 久久久91精品国产一区二区三区| 欧美性受xxxx黑人xyx性爽| 国产日本欧洲亚洲| 国产一区在线精品| 一区二区三区av电影 | 久久精品男人的天堂| 在线观看视频91| 亚洲黄色小视频| 99视频精品免费视频| 在线观看日产精品| 一区二区三区 在线观看视频| 99国产精品一区| 欧美午夜片在线观看| 亚洲一区二区三区在线看| 久久久久久97三级| 777xxx欧美| 日韩电影在线一区二区三区| 国产精品久久久久天堂| 久久女同性恋中文字幕| 狠狠久久亚洲欧美| 亚洲福利视频一区二区| 国产精品久久久久永久免费观看| 国产成人日日夜夜| 日本道免费精品一区二区三区| 亚洲乱码精品一二三四区日韩在线| 不卡欧美aaaaa| 欧美日韩久久一区二区| 亚洲成人一二三| 国产精品久久久久天堂| 国产午夜精品久久久久久久| 国产成人在线观看| 欧美日韩一区在线| 日韩电影在线一区| 曰韩精品一区二区| 综合网在线视频| 久久免费视频色| 欧美大白屁股肥臀xxxxxx| 国产真实乱子伦精品视频| 午夜av一区二区三区| 一二三四社区欧美黄| 国产精品成人一区二区三区夜夜夜 | 国产欧美va欧美不卡在线 | 成人激情小说网站| 欧美日韩国产高清一区二区三区 | 久久精品72免费观看| 亚洲高清久久久| 亚洲精品免费视频| 中文字幕亚洲一区二区va在线| 国产亚洲视频系列| 91小视频在线免费看| 日韩精品最新网址| 成人久久视频在线观看| 欧美一区二区三区四区久久| 国产最新精品免费| 欧美日韩一区二区在线观看 | 欧美激情一区在线| 中文成人av在线| 久久久影视传媒| 国产午夜精品在线观看| 99久久久精品| 久久影音资源网| 9i看片成人免费高清| 成人高清视频在线| 日韩亚洲欧美高清| 国产sm精品调教视频网站| 7777精品伊人久久久大香线蕉的 | 国产在线不卡一区| 欧美视频中文字幕| 韩国成人福利片在线播放| 精品视频免费在线| 国产精品一区免费在线观看| 91精品国模一区二区三区| 国产精品一区二区久久不卡| 欧美一区二区视频观看视频| 国产精品一区在线观看你懂的| 欧美女孩性生活视频| 国产精品一区一区| 日韩欧美一区在线| 粉嫩av亚洲一区二区图片| 欧美一级夜夜爽| av中文字幕不卡| 国产亚洲精品福利| 中文一区在线播放| 亚洲欧美日韩一区| 亚洲午夜视频在线| 男男视频亚洲欧美| 欧美日韩视频在线观看一区二区三区| 激情图片小说一区| 日韩精品中文字幕一区二区三区 | 午夜欧美在线一二页| 色综合天天综合| 久久av中文字幕片| 日韩一区二区影院| 91在线看国产| 一区二区中文视频| 一区二区三区.www| 免费在线一区观看| 91精品国产色综合久久不卡电影| 波多野结衣91| 国产精品免费久久| 一区二区激情小说| 久国产精品韩国三级视频| 日韩一级黄色大片| 国产亚洲综合在线| 亚洲精品一二三| 亚洲欧美韩国综合色| 国产九色sp调教91| 精品av久久707| 亚洲国产精品高清| 亚洲国产你懂的| 欧美日韩三级在线| 94-欧美-setu| 亚洲柠檬福利资源导航| 色综合天天综合| 丰满少妇在线播放bd日韩电影| 国产日韩影视精品| 亚洲伊人色欲综合网| 激情另类小说区图片区视频区| 精品久久久久99| 国产精品国产精品国产专区不蜜| 视频一区国产视频| 欧美一区二区免费观在线| 国产日韩欧美精品综合| 午夜视频在线观看一区| 91麻豆精品国产91久久久久久| 国产亚洲综合在线| 亚洲aⅴ怡春院| 欧美一区二区观看视频| 中文字幕精品在线不卡| 日韩va亚洲va欧美va久久| k8久久久一区二区三区 | 欧美激情中文字幕一区二区| 午夜影院久久久| 日韩免费在线观看| 最新国产の精品合集bt伙计| 久久99精品久久久| 国产欧美一区二区在线| 亚洲va韩国va欧美va| 成人美女视频在线看| 亚洲色图都市小说| 欧美色老头old∨ideo| 久久伊人中文字幕| 精品国产三级a在线观看| 国产亚洲视频系列| 日韩av在线播放中文字幕| 精品美女在线播放| 一区二区欧美精品| 成人国产精品免费| 亚洲高清一区二区三区| 日韩亚洲欧美在线观看| 亚洲乱码国产乱码精品精98午夜| 国产精品小仙女| 亚洲精品欧美在线| 欧美一区二区视频观看视频| 亚洲欧美另类综合偷拍| 国产91高潮流白浆在线麻豆| 亚洲精品免费视频| 日韩精品一区在线| 亚洲成在人线免费| 26uuu亚洲婷婷狠狠天堂| 日韩成人免费在线| 日本一区二区电影| 欧美在线free| 国产精品久久一卡二卡| 国产麻豆视频一区| 亚洲综合区在线| 欧美精品一区二区三区在线| 一本到一区二区三区| 欧美激情在线看| 国产成人午夜精品5599| 亚洲一卡二卡三卡四卡五卡|