.NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI

作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计。那如何套用呢?今天就以我们系列实战教程中的CMS系统为例来应用第三方的后台模板LayuiCMS2.0为例来进行实战演练吧!

本文已收录至《.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划》
作者:依乐祝
首发地址 “DotNetCore实战”公众号
原文地址:https://www.cnblogs.com/yilezhu/p/10210732.html

写在前面

这里先对从一开始就开始追这个ASP.NET Core实战项目之CMS系列教程的读者朋友说声抱歉。说因为太忙很久没更新了,这都是托词!其实我是想趁着元旦假期把后台功能全部写完以后再来一点点的再分享出来的,奈何前端知识的软肋彻底爆发,再加上周末陪小孩因此只完成了百分五十左右的开发工作,再者群里很多小伙伴也已经在崔更了,所以摒弃之前的策略,改成边分享边开发的策略。接下来还是尽量保持一星期三篇左右的进度来分享,写文章真的比写代码要更费神,希望大家能够多多支持,多多推荐!你的推荐也是我继续分享的动力!当然祝福大家“元旦后第一天正式上班开开心心,快快乐乐”。

实战

ASP.NET Core MVC项目结构介绍

在开始之前先让我们大致了解下一个新创建的ASP.NET Core MVC的项目结构,只有了解了项目结构后,我们才能得心应手的进行相关的操作!同时由于Czar.Cms.Admin项目中我已经应用过了模板,因此我们以Czar.Cms.Site这个还没有动过手术的前端项目为例来进行讲解。

  1. 新创建的一个空的ASP.NET Core MVC的项目结构如下所示,我们只介绍圈起来的八个部分:

    640?wx_fmt=png

  2. wwwroot部分放的内容都是前端的内容,如css,js,image等等。如下图所示:

    640?wx_fmt=png

    ASP.NET Core MVC项目为我们生成了一套默认的样式,如上图红圈圈起来的部分就是这套默认的样式(下面再一步一步的替换它),我们按如下图所示的操作选择这个项目,然后右键-》查看-》在浏览器中查看,

    640?wx_fmt=png

    看到如下的默认界面(别急,我们接下来再替换它)

    640?wx_fmt=png

  3. 依赖项:顾名思义就是项目所需要以来的第三方组件,比如我们的Czar.Cms.Site项目需要依赖仓储层的项目,比如我们用到了第三方的Autofac组件等等,如下图所示:

    640?wx_fmt=png

  4. Controllers:MVC架构中的C层即控制器层,用到Asp.Net MVC的对这个控制器应该不陌生吧!这个 文件夹下包含负责处理用户输入和响应的控制器类。另外要求所有控制器的名称必须以 "Controller" 结尾。如下图所示:

    640?wx_fmt=png

  5. Models:MVC架构中的M层即实体层,这个大伙应该都熟悉吧就是实体对象,这里如果我再截图的话感觉就是在侮辱大伙的智商,所以~~~~

  6. Views:MVC架构中的V层即视图层,用来在浏览器中显示的具体界面。如下图所示,这里跟Controller层进行对应,如上图标注的HomeController中的Index就对应Views文件夹下Home文件夹下面的Index.cshtml文件:

    640?wx_fmt=png

    我们尝试把Index.cshtml中的内容改为Welcome 依乐祝!,然后再浏览器中打开查看一下,可以看到页面的内容已经发生了变化

    640?wx_fmt=png

  7. appsettings.json:这个文件是系统配置文件,不知道大家还记得《.NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入》这篇文章中的内容吗?里面详细介绍了这个文件的加载过程。

  8. Program.cs:及系统的启动入口,熟悉C#的童鞋是不是感觉似曾相识,没错,就是一个控制台程序的入口嘛!你是否在想,里面会不会有Main方法呢?哈哈,自己打开看下吧!

  9. Startup.cs:启动配置文件,第三篇也说过了,其实这个文件会被转换成IStartUp然后再进行注入的!不清楚的可以去看第三篇,有提到!

Views结构介绍

关于Views的接哦古,感觉还是有必要提一下,不知道大伙有没有注意到我们上面打开的Index.cshtml文件,这个里面好像没有html,head,title,body等等标签啊,但是如果我们再浏览器中右键查看源文件,可以看到如下所示引入了很多的js以及css样式文件啊,这究竟是怎么做到的呢?别急,我们这个小节就来阐述。

640?wx_fmt=png

  1. Views文件夹下面有一个特殊的文件夹即Shared文件夹以及特殊的文件,以_开头的文件。如下图所示红色圈圈圈起来的,

    640?wx_fmt=png

  2. Shared文件夹下面就是定义一些公共部分的模板,就以MVC默认模板为例,如定义公共的头部菜单部分,或者公共的底部部分,我们以Shared\_Layout.cshtml为例进行讲解,如下图所示:

    640?wx_fmt=png

    这个文件定义了一个标准的html5的模板,包含头部,导航部分,正文有差异的不放呢,底部,甚至可以根据环境变量加载不同的内容。这里留个问题,那我们前面看的Home/Index.cshtml用的是哪个样式呢?

  3. 再看看跟Shared文件夹平级的文件_ViewStart.cshtml 可以看到如下内容:

    640?wx_fmt=png

    这个文件就是用来定义全局的模板引用规则的,如上图,这里给所有的视图默认应用了_Layout的模板,也就是2中流的思考题的答案,即应用了Shared/_Layout.cshtml这个模板的样式。

应用第三方UI模板

了解了上面的结构后,我们知道,如果想应用第三方的UI,那么我们得把默认生成的wwwroot中的内容替换成我们使用的第三方模板,然后按照第三方UI模板的格式,在Shared\_Layout.cshtml中拷贝公共的模板,然后再把变化的部分放到对应的页面即可。明白了原理,在开始动手覆盖是不是感觉得心应手了呢?还不赶紧开始吧!毕竟是实战,如果不实战一番感觉对不起这个名字,So,我就以LayuiCms2.0为例来给大伙实战一番。刚好我们的CMS后台就是用的这个模板。

  1. 想引用第三方模板之前是不是得先把模板下下来呢?如果你也想用LayuiCms2.0,可以点这里下载

  2. 解压后把里面的css,images,js等文件拷贝到wwwroot目录里面,当前拷贝之前还是建议你先把这个目录下面的所有文件都清理掉。由于这个Layuicms依赖Layui,所以还需要把layui文件夹拷贝过去。这个每个UI模板不一样需要拷贝的内容不尽相同。

    640?wx_fmt=png

    拷贝后的目录结构如下所示:这里我把json文件也拷贝过去了,后期再把对应的json文件替换掉!先用静态数据演示。

    640?wx_fmt=png

  3. 替换Shared对应的模板,把整个文件简单粗暴的拷贝过去,然后做相应的替换即可,对于变化的部分应用@RenderBody() ,替换后的内容如下所示:

    640?wx_fmt=png

  4. 把变化的内容放到具体的页面中吧,这里我只展示一个main里面的内容:

    640?wx_fmt=png

  5. 到此结束,其他的模板替换方案类似。

效果展示

这里话不多说,给大家展示下效果吧:

主页

640?wx_fmt=png

角色管理:

640?wx_fmt=png

角色编辑:

640?wx_fmt=png

用户管理:

640?wx_fmt=png

用户管理编辑:

640?wx_fmt=png

用户管理列表页,锁定用户:

640?wx_fmt=png

锁定界面:

640?wx_fmt=png

目前只实现了这些功能其他后续再展示。

开原地址

这个系列教程的源码我会开放在GitHub以及码云上,有兴趣的朋友可以下载查看!觉得不错的欢迎Star

GitHub:https://github.com/yilezhu/Czar.Cms

码云:https://gitee.com/yilezhu/Czar.Cms

如果你觉得这个系列对您有所帮助的话,欢迎以各种方式进行赞助,当然给个Star支持下也是可以滴!另外一种最简单粗暴的方式就是下面这种直接关注我们的公众号了: 640?wx_fmt=png 

总结

今天我给大家讲解了ASP.NET Core MVC项目的结构,并详细阐述了View层的模板嵌套原理。接着带着大家一步一步的操作了一遍如何应用第三方UI模板。当然源码也已经同步更新到GitHub上了,有兴趣的小伙伴可以下载参考!下一篇我会带着大家结合这个模板,来讲解如何实现角色的增删改查!以及项目各个结构之间的协调工作!敬请期待吧!放心,下篇周内就会赶出来!另外如果你有任何问题可以下方留言或者加群637326624跟大伙进行沟通。

相关文章:

  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

  • .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

  • .NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

  • .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练

  • .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了

  • .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用

  • .NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程

  • .NET Core实战项目之CMS 第八章 设计篇-内容管理极简设计全过程

  • .NET Core实战项目之CMS 第九章 设计篇-白话架构设计

  • .NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计

  • .NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发

  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装GURD及仓储代码生成器实现

原文地址:https://www.cnblogs.com/yilezhu/p/10210732.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg


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

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

相关文章

YBTOJ:伞兵空降(二分图匹配)

文章目录题目描述解析代码题目描述 有n个点和m条边的有向无环图,在这张图上的某些点上空投伞兵,使伞兵可以走到图上所有的点。 且每个点只能被一个伞兵走一次。问至少需要放多少伞兵。 解析 考虑一开始给每个点分配一个伞兵,最差就是这样n…

CF388C-Fox and Card Game【博弈论,结论】

正题 题目链接:https://www.luogu.com.cn/problem/CF388C 题目大意 有nnn堆卡片,第iii堆有sis_isi​张,给出每张卡的权值。现在先手选择一堆取走堆底的牌,然后后手选择一堆取走堆顶的牌,直到所有牌被取走。在双方都要求最大化取…

[FFT/IFFT]快速傅里叶(逆)变化 + 递归和递推模板

现在时间是2021-2-2,重新回来看2019学习的一知半解的FFTFFTFFT,又有了新的理解 所以修改了以往写过的文章,并增添些许内容 因为过去一年多,上了高中,学的知识多了些,以前不懂的有些东西现在看来挺简单的&am…

软件开发模式:瀑布与敏捷

瀑布和敏捷不是什么新概念,这里只是个人在团队合作中不得不去思考而做的归纳和总结,同时记录自己曾经踩过的坑,新瓶装旧酒,希望对你有所启发。瀑布模式瀑布模型是比较传统一种开发模式,特别是在2B的传统企业&#xff0…

257. 关押罪犯

题意: S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪…

AC 自动机

比我小一届却吊打我的大脚玩家(djwj233)的博客 什么是 AC 自动机 AC 自动机是一种多模匹配算法,就是解决 多个模式串 匹配 单个/多个 文本串用的。 AC 自动机的过程 P3808 【模板】AC 自动机(简单版) 总的来说,AC 自动机类似将所有串跑一个 KMP。 看到有…

YBTOJ洛谷P3231:消毒(二分图匹配)

文章目录题目描述解析代码题目描述 最近在生物实验室工作的小 T 遇到了大麻烦。 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为 a∗b∗ca*b*ca∗b∗c。为了实验的方便,它被划分为 a∗b∗ca*b*ca∗b∗c 个单位立方体区域&am…

CF388D-Fox and Perfect Sets【dp,线性基】

正题 题目链接:https://www.luogu.com.cn/problem/CF388D 题目大意 给出kkk,求有多少个集合SSS满足S⊆[1,k]S\sube [1,k]S⊆[1,k]且 a∈S,b∈S⇒axorb∈Sa\in S,b\in S\Rightarrow a\ xor\ b\in Sa∈S,b∈S⇒a xor b∈S 1≤k≤1091\leq k\leq 10^91≤k≤109 解题思…

503. 借教室

503. 借教室 题意: 在大学期间,经常需要租借教室。 大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。 教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教…

.net core+Spring Cloud学习之路 一

文章开头唠叨两句。2019年了,而自己参加工作也两年有余了,用一个词来概括这两年多的生活,就是:“碌碌无为”。也不能说一点收获都没有,但是很少。2019来了,我立志要打破现状,改变自己&#xff0…

CF1153F-Serval and Bonus Problem【dp,数学期望】

正题 题目链接:https://www.luogu.com.cn/problem/CF1153F 题目大意 在有nnn个区间的左右端点在[0,l)[0,l)[0,l)范围内随机,求被至少kkk个区间覆盖的期望长度。 1≤n,k≤2000,1≤l≤1091\leq n,k\leq 2000,1\leq l\leq 10^91≤n,k≤2000,1≤l≤109 解题思路 长度…

网络流优化:-1优化与当前弧优化

所谓网络流优化,就是对网络流算法进行优化 (逃) -1优化 大概就是如果在一次bfs搜出的图中发现当前这个点啥都增广不出来,就暂时把这个点扣掉 当前弧优化 在一次bfs搜出的图中,如果某条边已经搜过,就不必…

P3128 [USACO15DEC]Max Flow P

P3128 [USACO15DEC]Max Flow P 树上差分之点差分模板题 题目描述: FJ给他的牛棚的N(2≤N≤50,000)个隔间之间安装了N-1根管道,隔间编号从1到N。所有隔间都被管道连通了。 FJ有K(1≤K≤100,000)条运输牛奶的路线,第i条路线从隔间si运输到隔…

插头DP/轮廓线DP

题解 P5056 【【模板】插头dp】- GNAQ (\(\uparrow\) 学习资料,大部分贺的,有一些些的改动与自己的补充) 什么是插头 DP 插头 DP 是一类用状压 DP 来处理连通性问题的 DP 方法。 常见的类型:棋盘插头 DP、连通性问题(回路问题,路径…

周末狂欢赛4(1-02E. JM的西伯利亚特快专递,寿司晚宴,荷马史诗)

文章目录T1:1-02E. JM的西伯利亚特快专递题目题解codeT2:寿司晚宴题目题解codeT3:荷马史诗题目题解codeT1:1-02E. JM的西伯利亚特快专递 题目 今天JM收到了一份来自西伯利亚的特快专递,里面装了一个字符串 s &#x…

.NET Core容器化开发系列(一)——Docker里面跑个.NET Core

前言博客园中已经有很多如何在Docker里面运行ASP.NET Core的介绍了。本篇主要介绍一些细节,帮助初学的朋友更加深入地理解如何在Docker中运行ASP.NET Core。安装DockerDocker现支持在主流Linux、Windows和macOS上安装,官方的安装文档请参考docker docs。…

YBTOJ:卖猪问题(网络流)

文章目录题目描述数据范围解析代码题目描述 尼克在一家养猪场工作,这家养猪场共有MMM间锁起来的猪舍,由于猪舍的钥匙都给了客户,所以尼克没有办法打开这些猪舍。有NNN个客户从早上开始一个接一个来购买生猪,他们到达后首先用手中…

P4370-[Code+#4]组合数问题2【数学,堆】

正题 题目链接:https://www.luogu.com.cn/problem/P4370 题目大意 求满足m≤n≤am\leq n\leq am≤n≤a的情况下,前kkk大的(nm)\binom{n}{m}(mn​)的和。 1≤n≤106,1≤k≤1051\leq n\leq 10^6,1\leq k\leq 10^51≤n≤106,1≤k≤105 解题思路 首先想到的是(nm)>…

【做题记录】[SCOI2009]围豆豆

[SCOI2009]围豆豆 \(n\times m(n,m\le 10)\) 的网格中有 \(d\) 个球 \((d\le 9)\),要求在网格中选定一个起点开始做一个欧拉回路,路径的价值为路径完全包住的球的价值之和减去路径长度,求所有路径中的价值最大值。 有价值与步数的两个限制&am…

Codeforces Round #695(Div. 2)

Codeforces Round #695 (Div. 2) 1467A Wizard of Orz 1467B Hills And Valleys 1467C Three Bags 1467D Sum of Paths 1467E Distinctive Roots in a Tree 1468A LaIS