• 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- 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。分类管理在博客中不作说明了,大家可以直接看源码,后台代码写的有点乱糟糟,凑合看吧。



  • 相关阅读:
    2个准则,解决人际、团队和客户问题
    系统思维
    如何看透他人行为背后的本质 | 思维模型02:行为分析模型
    提问比回答更有力量
    有了套路,为什么还是解决不了问题
    能够跨界成功的人
    正确的思考
    你的烦恼,全因为不会思考
    努力,到底是不是天赋
    我们是魔术师面前的观众吗
  • 原文地址:https://www.cnblogs.com/Allen0910/p/6638939.html
Copyright © 2020-2023  润新知