04-dotnetCore博客后台基本功能实现

  今天继续上篇博客的内容,在上一篇的时候,已经基本实现了博客列表内容的显示,继续进行添加、编辑、删除等功能。添加和编辑界面共用一个界面,添加界面如图所示:

同样我这里使用的还是layui里面的表单内容,直接拷贝这个界面:

把没必要的内容删除再稍作修改,直接贴修改后的代码,里面也包含了所有内容:

@model DayaliBlog.Model.Blog.T_BLOG_CONTENT
<blockquote class="layui-elem-quote">添加博客</blockquote>
<form class="layui-form" method="post" action="">
    <div class="layui-form-item">
        <label class="layui-form-label">标题</label>
        <div class="layui-input-block">
            @Html.TextBoxFor(a=>a.BlogTitle,new { placeholder = "请输入标题", @class="layui-input"})
        </div>
    </div>
    <input type="hidden" value="@Model.BlogID" name="BlogID"/>
    <div class="layui-form-item">
        <label class="layui-form-label">博客类型</label>
        <div class="layui-input-block">
            <select name="BlogType" lay-verify="required">
                @foreach (DayaliBlog.Model.Sys.T_SYS_CONFIG config in ViewBag.BlogTypes)
                {
                    if (config.SUB_ID == Model.BlogType)
                    {
                        <option selected="selected" value="@config.SUB_ID">@config.SUB_NM</option>
                        continue;
                    }
                    <option value="@config.SUB_ID">@config.SUB_NM</option>
                }
            </select>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">所属分类</label>
        <div class="layui-input-block">
            <select name="CatelogID" lay-verify="required">
                @foreach (DayaliBlog.Model.Blog.T_BLOG_CATELOG categ in ViewBag.CategList)
                {
                    if (categ.CatelogID == Model.CatelogID)
                    {
                        <option selected="selected" value="@categ.CatelogID">@categ.CatelogName</option>
                        continue;
                    }
                    <option value="@categ.CatelogID">@categ.CatelogName</option>
                }
            </select>
        </div>
    </div>
    <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">内容</label>
        <div class="layui-input-block">
            @Html.TextAreaFor(a=>a.BlogContent,new{ placeholder = "请输入内容" ,@class="layui-textarea"})
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">备注</label>
        <div class="layui-input-block">
            @Html.TextBoxFor(a=>a.Remark,new{ placeholder = "请输入备注", @class = "layui-input"})
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <input class="layui-btn" style="max-width: 100px" lay-submit lay-filter="formDemo" type="submit" value="提交"/>
        </div>
    </div>
</form>

还是使用的是MVC的模式进行绑定数据,不多说了,其中form表单我们采用的是post提交方式,另外最后的提交按钮我已将layui中按钮进行替换了,type="submit",再去完成我们相关的控制器,Index,Add,Del三个Action方法的实现,回到BlogController控制器,还是少说废话,直接贴代码:

using System;
using DayaliBlog.Model.Blog;
using DayaliBlog.Service.Blog;
using DayaliBlog.Service.Sys;
using Microsoft.AspNetCore.Mvc;

namespace DayaliBlog.Web.Areas.Admin.Controllers
{
    [Area("Admin")]
    public class BlogController : Controller
    {
        BlogCategService _categService=new BlogCategService();
        BlogContentService _contentService=new BlogContentService();
        BlogCategRelService _relCateg=new BlogCategRelService();
        public IActionResult Index()
        {
            var list = _contentService.GetList("");
            return View(list);
        }

        public IActionResult Add(int? id)
        {
            ViewBag.BlogTypes = SysConfig.GetConfigList(SysConfig.BlogType);
            ViewBag.CategList = _categService.GetList("");
            T_BLOG_CONTENT content =new T_BLOG_CONTENT();
            if (id != null)
            {
                content = _contentService.GetModel(" b.BlogID=" + id.Value);
            }
            return View(content);
        }

        [HttpPost]
        public IActionResult Add(T_BLOG_CONTENT content)
        {
            int blogId = 0;
            if (content.BlogID == 0)
            {
                content.CreateTIme = DateTime.Now;
                content.CreateUser = 1;
                content.LastUptTime = DateTime.Now;
                content.BlogState = 1;
                 blogId= _contentService.Insert(content);
            }
            else
            {
                blogId = content.BlogID;
                content.UpdateUser = 1;
                content.LastUptTime = DateTime.Now;
                content.BlogState = 1;
                bool isSuccess=_contentService.Update(content);
                if (isSuccess)
                    _relCateg.Delete(content.BlogID);
            }
            if (blogId > 0)
                _relCateg.Insert(blogId, content.CatelogID);
            return Redirect("/Admin/Blog/Index");
        }

        public IActionResult Del(int id)
        {
            _relCateg.Delete(id);
            _contentService.Delete(id);
            return Redirect("/Admin/Blog/Index");
        }
    }
}

几个比较特殊的地方,一个是Add(int? id),因为添加和编辑是同一个界面,当点击添加的时候,传值Id为null,当编辑时传的是BlogID ,以此作为是要插入还是编辑的区分。同样的Add(Model) 方法里面,也是以id为标识,[HttpPost]标识这个Action只能为Post所调用,插入或修改完成后直接返回到首页,return Redirect("/Admin/Blog/Index");

ViewBag.BlogTypes 加载博客类型,ViewBag.CategList 加载所属分类,在前台便利List集合加载下拉框:

@foreach (DayaliBlog.Model.Blog.T_BLOG_CATELOG categ in ViewBag.CategList)
                {
                    if (categ.CatelogID == Model.CatelogID)
                    {
                        <option selected="selected" value="@categ.CatelogID">@categ.CatelogName</option>
                        continue;
                    }
                    <option value="@categ.CatelogID">@categ.CatelogName</option>
                }

判断编辑时,当前博客的类型或者分类,将selected属性设置为选中。我的源码地址:DayaliBlogDemo。分类管理在博客中不作说明了,大家可以直接看源码,后台代码写的有点乱糟糟,凑合看吧。

时间: 2024-10-27 13:34:12

04-dotnetCore博客后台基本功能实现的相关文章

【故障公告】新版博客后台部署时的配置问题引发故障

最近,我们对新版博客后台(Angular 8.2.7 + .NET Core 3.0)进行了灰度发布,如果您访问博客后台时跳转到 https://i-beta.cnblogs.com/ ,说明使用的就是新版博客后台. 今天我们在一次基于 gitlab-ci 的自动化发布过程中,由于操作问题在发布前没有对 appsettings.Production.json 的修改进行保存,造成容器在启动时使用了旧版的配置文件,再加上容器的健康检查不能检查出这种不正常情况(这个地方的改进还没完成),最不该的是在

51CTO博客后台为什么不能添加了博文分类了???

目前我的51CTO博客后台分类有20个,想要再添加其他分类,但是无法添加,51CTO能不能说说这是为什么

hexo next主题为博客添加分享功能

title: hexo next主题为博客添加分享功能 date: 2018-01-06 20:20:02 tags: [hexo博客, 博客配置] categories: hexo next主题配置 --- 今天心血来潮,决定给博客添加分享功能,百度上首先是找到了使用shareSDK的分享功能,最后在实践的过程中发现它添加时步骤比较多,添加完成后效果比较丑(就是一个长条的浅蓝色按钮),而且点击后想要退出分享比较麻烦(它的取消按钮实在太难找了,它在页面最下方的位置,呈现浅灰色,这个设计太反人类了

《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来

上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台的数据管理,添加,修改,删除什么的.我们开发这个博客,主要讲的是怎么快速开发一个个人博客,所以不会很系统的讲解PHP的基础知识,及thinkphp5框架的系统知识,当然在后面的模块开发中,用到细节知识点的时候,我也会讲给大家的. 一.php环境安装 这里为了节约时间,我们就不用单个安装php,apa

从零到一开发博客后台管理系统(二)

从零到一开发博客后台管理系统 1.今日计划完成 home页顶栏设计 home页tab标签页与左侧导航栏动态菜单联动 axios的封装 2.home页顶栏设计 只是用于显示标题,看起来干净一些 我们来编辑top.vue <template> <div> <span class="title">博客管理系统</span> </div> </template> .title { margin-left: 1.25rem;

【故障公告】docker swarm 集群问题造成新版博客后台故障

非常抱歉,今天下午 16:55~17:05 左右,由于 docker swarm 集群的突发不稳定问题造成新版博客后台(目前处于灰度发布阶段)无法正常使用,由此给您带来麻烦,请您谅解. 出故障期时,新版博客后台的2个容器都无法正常启动. AME NODE DESIRED STATE CURRENT STATE i_web.1 prod-swarm-w3 Running Assigned 5 minutes ago i_web.2 prod-swarm-w4 Running Assigned 2

博客的评论功能

今天呢,我们一起来新增一个详细页面下的简单评论功能,又是一个简单到我都不好意思说的东东....当然啦,万丈高楼平地起,我们就从简单的开始,以后慢慢添加呗. 还是按照以前的老步骤,models>views>urls>templates. 因为我们要多一个评论功能,所以我们得新建一张用来保存评论数据的表.所已在models添加如下东东: class BlogComment(models.Model):     user_name = models.CharField('评论者名字', max

博客园 打赏功能设置,友言,友荐,分享功能设置

一.jiaThis 分享到设置 <!-- JiaThis Button BEGIN --><script type="text/javascript" src="http://v3.jiathis.com/code/jiathis_r.js?move=0&btn=r5.gif" charset="utf-8"></script><!-- JiaThis Button END --> 二.友荐

Golang 在 Linux CentOS 6.5 服务器上实现 博客后台程序开机启动

在linux下想实现开机启动的方法很多,这里我采用了在/etc/rc.local里写shell指令的方式. 以下就以我的实际操作为例子讲述,很多地方需要看官自己调整信息哦! 1.在/etc/rc.local文件中,添加你想要执行的脚本. 比如,我现在要执行的是Golang项目启动的脚本: ficowLogPath="/home/ficow/autoLaunchLog.txt" #launch ficow's blog server cd /home/ficow/ficowblog/sr