开源博客项目Blog .NET Core源码学习(25:App.Hosting项目结构分析-13)

  本文学习并分析App.Hosting项目中后台管理页面的文章管理页面。
  文章管理页面用于显示、检索、新建、编辑、删除文章数据,以便在前台页面的首页、文章专栏、文章详情页面显示文章数据。文章管理页面附带一新建及编辑页面,以支撑新建和编辑文章数据。整个页面使用了layui中的表格、表单、上传组件、KindEditor组件、日期与时间选择、formSelects组件(参考文献3)等样式或模块,并未使用独立的js文件,而是直接在页面内嵌js代码,并调用BlogManage/ArticleController的相关函数处理数据。
在这里插入图片描述

  文章管理页面的上半部分显示搜索框,下半部分以表格形式显示全部文章数据或者检索结果。
在这里插入图片描述
  内置的js代码主要用于设置表格样式及处理事件,同时处理搜索事件。调用layui的table.render函数设置表格样式,主要包括:
  1)用elem属性设置表格容器元素,同时用url设置调用BlogManage/ArticleController的Index函数分页获取所有文章数据;
  2)用limit、limits、page属性设置数据分页显示;
  3)用toolbar属性设置头部工具栏,指定的元素id定义在_AminLayout.cshtml内,且根据不同的页面显示不同的工具栏内容,在本页面中工具栏中有添加按钮(按钮在系统管理->按钮管理中配置);
  4)用where属性设置调用Index时附加的其它参数;
  5)用cols属性设置表格显示列,其中第一列采用type:‘number’设置为序号列,标题列(对应字段Title)、来源列(对应字段Source)、是否显示列(对应字段Visible)、是否置顶列(对应字段IsTop)采用templet属性以模版函数方式设置显示样式,其它列对应Index函数返回值的属性,最后一列用templet属性以模版选择器形式指定_AminLayout.cshtml文件中定义的按钮模版(按钮在系统管理->按钮管理中配置)。

在这里插入图片描述
  除上述设置之外,还定义了工具栏、操作按钮、检索按钮的响应函数,其余的添加、编辑和删除按钮中,删除按钮的事件处理函数逻辑为调用BlogManage/ArticleController的Delete函数删除数据,然后使用table.reload重载页面数据。
在这里插入图片描述
  调用form.on('switch(enabled)'设置表格中是否显示列开关事件的事件处理函数,其内部调用tools.submitConfrim函数提示用户是否在显示和隐藏间切换,确定的话则调用BlogManage /ArticleController的Show函数更新显示状态,同时更新页面数据,取消的话则还原是否显示列之前的显示值。
  调用form.on('switch(top)'设置表格中是否置顶列开关事件的事件处理函数,其内部调用tools.submitConfrim函数提示用户是否在置顶和取消置顶间切换,确定的话则调用BlogManage /ArticleController的Top函数更新置顶状态,同时更新页面数据,取消的话则还原是否置顶列之前的显示值。

在这里插入图片描述
  新建和编辑文章数据使用的同一页面,位置为BlogManage\Views\Article\Form.cshtml页面,使用layui的表单组件设置样式。如果是新建文章,则直接弹出页面编辑文章数据,而编辑数据的话,主页面会通过url传递key参数,在编辑页面中调用BlogManage/ArticleController的Detail函数获取文章数据初始化编辑页面的对应元素数据。新建或编辑完成后,主页面的js中设置了回调函数,最终调用BlogManage/ArticleController的Form函数新增或更新数据。
在这里插入图片描述

  如上图所示,采用layui的栅格布局将新建或编辑文章页面划分为左右两栏,左侧上半部分维护文章标题及摘要,同时调用BlogManage/ArticleController的Thumbnail函数上传文章缩略图,下半部分使用富文本编辑器KindEditor编辑文章正文,并在Form.cshtml调用KindEditor.ready初始化富文本编辑器设置,右侧从上向下维护文章属性,调用BlogManage/CategoryController的List函数和BlogManage/ TagsController的List函数初始化栏目和标签下拉复选框。文章还能设置定时发布,不过暂时没有看出来处理逻辑。
在这里插入图片描述

参考文献:
[1]https://gitee.com/miss_you/Blog
[2]https://layui.dev/docs/2/
[3]https://github.com/hnzzmsf/layui-formSelects

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【传知代码】transformer-论文复现

文章目录 概述原理介绍模型架构 核心逻辑嵌入表示层注意力层前馈层残差连接和层归一化编码器和解码器结构 数据处理和模型训练环境配置小结 本文涉及的源码可从transforme该文章下方附件获取 概述 Transformer模型是由谷歌在2017年提出并首先应用于机器翻译的神经网络模型结构…

IDEA的妙用

IDEA 安装破解 复制JetbrainsIdesCrack-4.2.jar到安装目录下 修改安装目录下的bin目录的idea64.exe.vmoptions: 最后一行添加:-javaagent:E:\develop\JetBrains\IntelliJ IDEA 2018.3.5\bin\JetbrainsIdesCrack-4.2.jar(注意:使用自己的路…

Flutter笔记:Widgets Easier组件库-使用隐私守卫

Flutter笔记 Widgets Easier组件库:使用隐私守卫 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https:…

实战演练:一文教你将交换机纳入K8s,对容器进行纳管

随着云计算的发展和云原生应用的兴起,容器技术成为一种流行的应用部署和管理方式。容器化应用程序具有轻量、可移植和可扩展的特点,能够快速部署和运行在不同的环境中。Kubernetes作为一个容器编排平台,为云原生应用的部署、管理和自动化提供…

Qt官方示例---embedded

digiflip flickable flightinfo lightmaps raycasting styleexample

@RequestBody注解

RequestBody注解 扩展: http报文会包含四部分,第一部分是请求行,第二部分是请求头,第三部分是空行,第四部分是请求体。 对于POST之类的请求来说,它主要是用来传输数据的,它的参数主要是写在请求…

软考高级系规与高项,哪个更好考?

系规难度要小一些,但学习资源较少;高项难度大一些,但学习资源较多,二者各有优缺点。 偏管理方向考虑高项,偏运维方向考虑系规;没有计算机基础和相关经验,选择高项会更容易理解知识点&#xff1…

JAVA开发 基于最长公共子序列来计算两个字符串之间的重复率

计算两个字符串之间的重复率 最长公共子序列实现代码 最长公共子序列 基于最长公共子序列(Longest Common Subsequence, LCS)的重复率的中心逻辑是首先找到两个或多个序列中同时出现的、不一定连续但保持相对顺序的最长子序列,然后计算这个最…

如何使用Unity XR Interaction Toolkit

使用环境: Unity2021.3.21f XR Interaction Toolkit v3.0.0 各类函数可用的: 简单项目配置: 第一步,导包(samples可以不用导这么多,两个就够了): 第二步,构建场景&a…

【ZYNQ】GPIO 与 AXI GPIO

在嵌入式开发中,GPIO 是最常见的外设。GPIO 是 General Purpose I/O 的缩写,译为通用输入/输出。GPIO 用于连接外部设备,例如按键、传感器等,实现数字信号的输入或输出功能。本文主要介绍 Zynq GPIO 的基本概念,并对比…

SpringBoot 实现私钥解密 前端的公钥加密内容

目录 一、前端公钥加密 二、后端私钥解密 一、前端公钥加密 Nextjs 前端实现RSA公钥加密 JSEncrypt加载问题解决-CSDN博客 二、后端私钥解密 import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.…

表现层框架设计之表现层设计模式_3.MVVM模式

1.MVVM模式 MVVM模式正是为解决MVP中UI种类变多,接口也会不断增加的问题而提出的。 MVVM模式全称是模型-视图-视图模型(Model-View-ViewModel),它和MVC、MVP类似,主要目的都是为了实现视图和模型的分离,不…

深度学习之基于Yolov3的行人重识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 行人重识别(Person Re-Identification,简称ReID)是计算机视觉领域…

新品:LoRa扩频调制SOC无线模块-内置ARM、工业级晶振

LoRa-STM32WLE5是思为无线最新研发的一款SOC无线模块,模块主芯片采用了ST 公司的STM32WLE5芯片研发。模块采用LoRa调制,内置工业级晶振,并基于高性能的ArmCortex-m4 32位RISC核心,工作频率高达48 MHz。这个核心实现了一套完整的DS…

项目十二:简单的python基础爬虫训练

许久未见,甚是想念,今日好运,为你带好运。ok,废话不多说,希望这门案例能带你直接快速了解并运用。🎁💖 基础流程 第一步:安装需要用到的requests库,命令如下 pip inst…

【漏洞复现】智慧校园(安校易)管理系统 FileUpProductupdate.aspx 任意文件上传漏洞

0x01 产品简介 "安校易"是银达云创公司基于多年教育市场信息化建设经验沉淀,经过充分的客户需求调研,并依据国家"十三五”"教育信息化建设规范而推出的综合互联网教育信息化解决方案。“安校易“以物联网技术为基础,以学…

【Python小案例】Python+mysql+PyQt5健康体检报告查询

下载安装Python3.7.8 python官网:https://www.python.org/ PyQt5配置 安装PyQt5 pip install PyQt5pip install qt5_toolspytcharm创建项目 配置外部工具 QTDesigner的Arguments语句不用填 QTDesigner的Working directory语句:$ProjectFileDir$ Pyuic的Argume…

【职场心灵伴侣】文心一言智能体

【文心一言】智能体 写在最前面名称和简介:职场心灵伴侣AI生成头像添加工具智能体调优 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限…

智能农业时代:智能生态网络与数据流通的融合

随着科技的不断进步,智能农业已经成为现代农业发展的重要趋势。智能生态网络(IEN)作为一种集成化的解决方案,通过整合先进技术和数据要素流通,为智能农业的发展提供了强大的动力。在本文中,我们将探讨IEN在…

鸿蒙开发配置官方地图

一共需要配置 p12 p7b cer csr 四个文件 p12文件配置 注意创建文件名必须是.p12 到AGC创建项目 AppGallery Connect 添加自己的项目名称 我没有开启 暂时不需要 看个人需求 下载刚创建的cer证书 回到我的项目中 点击刚创建的项目 点击这里 四个文件齐全了 "metadata&qu…