最新要闻
- 种植牙的高价:被打碎了
- 为一季度量产做准备!宁德时代申请注册“麒麟电池”商标
- MacBook Air迎15岁生日 首次亮相由乔布斯从信封取出
- 全球报道:市场被国产手游席卷了 日本:课税!
- 今日最新!男孩寒假送外卖:20天挣7700元 给妈妈2000买年货
- 热资讯!一加11R现身印度官网:低频版骁龙8+、120Hz高刷屏
- 当前资讯!法拉利超跑当婚车 雪天接亲上坡频繁打滑 网友:后驱车肯定滑
- 一次性塑料餐具:开始被禁了
- 新一代安卓机皇!三星Galaxy S23 Ultra拍照分辨率达12240x16320
- 环球热点评!旺旺大礼包 经典零食箱62元2.7斤 送礼囤货必备
- 极端寒流来袭:吉尔吉斯斯坦终年不冻“热湖”罕见被冰封
- 弟弟发现姐姐首饰装备库原地惊了:被骗好多年!网友求购买链接
- 天天热资讯!男子网购晾衣杆 却被告知2024年发货!客服回应:说错了
- 【时快讯】爱优腾收费贵、限制多 网友奉上免费视频攻略:全靠Intel
- 每日焦点!车祸后发视频庆大难不死 结果被殡葬号关注!男子:别介
- 热讯:大海送“年货”!烟台海边再现大量海肠 大家抢疯:有人一会捞3千斤赚大
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【全球快播报】ASP.NET Core+Element+SQL Server开发校园图书管理系统(一)
随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NET Core也应运而生。本文主要基于ASP.NET Core+Element+Sql Server开发一个校园图书管理系统为例,简述基于MVC三层架构开发的常见知识点,仅供学习分享使用,如有不足之处,还请指正。
【资料图】
涉及知识点
在本示例中,涉及到B/S全栈开发的常见知识点,包括后端与前端,主要如下:
- 开发工具:Visual Studio 2022
- 目标框架:.Net 6.0
- 架构:MVC三层架构【Model-View-Controller】
- 前端框架:前端采用Element框架,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。可以大大提高开发效率,减少工作量。
- 数据库:SQL Server 2012。需要掌握基础的增删改查语句使用。
Element框架简介
Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。具体组件使用方法,可参考官网:https://element.eleme.io/#/zh-CN,
搭建开发框架
工欲善其事必先利其器,所以开发具体功能之前,首先要搭建开发环境,步骤如下所示:
1. 创建项目
本示例中的校园图书管理系统,基于ASP.NET Core MVC三层架构,在创建时选择对应模板即可,如下所示:
根据创建向导进行创建即可,在项目名称处输入CLMS,目标框架选择.Net6.0即可。为了项目可移植性,将DAL层和Entity层独立出来成单独的工程。项目结构如下所示:
2. 创建数据库
在本示例中,采用Data First方式,先创建数据库和对应的表结构,根据业务需求分析,
主要包括三部分:
- 书室管理:书室信息(Librarys),书架信息(BookRacks)
- 图书管理:书籍信息(Book),借还记录(Circulates)
- 系统管理:用户信息(Users),角色信息(Roles),菜单信息(Menus)以及角色权限分配(RoleMenus),用户角色分配(RoleMenus)
如下所示:
3. 在项目中配置数据库
连接数据库,需要在配置文件appsettings.json中,添加数据库连接字符串,如下所示:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "Default": "Server=localhost;Database=CLMS;Trusted_Connection=True;User Id=sa;Password=abc123;Encrypt=True;TrustServerCertificate=True;" }, "AllowedHosts": "*"}
4. 创建数据库操作对象上下文
EntityFrameWork框架需要进行安装,目前版本为7.0.1,可通过NuGet包管理器进行安装,如下所示:
数据库操作采用EntityFrameCore框架,继承自DbContext,如下所示:
1 using CLMS.Entity; 2 using Microsoft.EntityFrameworkCore; 3 4 namespace CLMS.DAL 5 { 6 ///7 /// 创建数据库上下文类 8 /// 9 public class DataContext : DbContext10 {11 public DbSetUsers { get; set; }12 13 public DbSet Menus { get; set; }14 15 public DbSet Roles { get; set; }16 17 public DbSet UserRoles { get; set; }18 19 public DbSet RoleMenus { get; set; }20 21 /// 22 /// 图书室23 /// 24 public DbSetLibrarys { get; set; }25 26 /// 27 /// 阅览架28 /// 29 public DbSetBookRacks { get; set; }30 31 /// 32 /// 借还记录33 /// 34 public DbSetCirculates { get; set; }35 36 /// 37 /// 图书38 /// 39 public DbSetBooks { get; set; }40 41 public DataContext(DbContextOptions options) : base(options)42 {43 44 }45 46 protected override void OnModelCreating(ModelBuilder modelBuilder)47 {48 base.OnModelCreating(modelBuilder);49 modelBuilder.Entity ().ToTable("Users");50 modelBuilder.Entity ().ToTable("Menus");51 modelBuilder.Entity ().ToTable("Roles");52 modelBuilder.Entity ().ToTable("UserRoles");53 modelBuilder.Entity ().ToTable("RoleMenus");54 //55 modelBuilder.Entity ().ToTable("Librarys");56 modelBuilder.Entity ().ToTable("BookRacks");57 modelBuilder.Entity ().ToTable("Circulates");58 modelBuilder.Entity ().ToTable("Books");59 }60 }61 }
5. EntityFramework配置
在Startup.cs中,添加EntittyFramework的注入,如下所示:
1 using Autofac.Extensions.DependencyInjection; 2 using CLMS.DAL; 3 using Microsoft.EntityFrameworkCore; 4 5 var builder = WebApplication.CreateBuilder(args); 6 7 // Add services to the container. 8 builder.Services.AddControllersWithViews(); 9 builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));10 builder.Services.AddHttpContextAccessor();11 builder.Services.AddSession();//配置session访问服务12 // 以下是autofac依赖注入13 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());14 var app = builder.Build();15 16 // Configure the HTTP request pipeline.17 if (!app.Environment.IsDevelopment())18 {19 app.UseExceptionHandler("/Home/Error");20 // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.21 app.UseHsts();22 }23 24 app.UseHttpsRedirection();25 26 app.UseStaticFiles();27 28 app.UseRouting();29 app.UseSession();30 app.UseAuthorization();31 32 app.MapControllerRoute(33 name: "default",34 pattern: "{controller=Home}/{action=Index}/{id?}");35 36 app.Run();
6. 安装客户端框架
在本示例中,主要用到Element UI框架,以及axios框,Vue2.0,可通过Visual Studio进行安装,如下所示:
选择Web项目,右键-->添加-->客户端库。打开添加窗口,然后选择对应库进行安装即可,如下所示:
安装成功后,如下所示:
登录页面
当基础开发环境搭建好后,就可以进行具体功能开发,以登录功能为例,步骤如下:
1. 创建控制器LoginController
控制器主要负责页面导航和逻辑处理,如下所示:
1 namespace CLMS.Host.Controllers 2 { 3 public class LoginController : Controller 4 { 5 private DataContext dataContext; 6 7 public LoginController(DataContext context) 8 { 9 dataContext = context;10 }11 12 [HttpGet]13 public IActionResult Index()14 {15 return View();16 }17 18 [Consumes("application/json")]19 [HttpPost]20 public Msg Login([FromBody]User user)21 {22 Msg msg = new Msg();23 if (string.IsNullOrEmpty(user.UserName) || string.IsNullOrEmpty(user.Password))24 {25 msg.message = "用户名或密码为空";26 msg.code = 1;27 return msg;28 }29 else30 {31 var item = dataContext.Users.FirstOrDefault(i => i.UserName == user.UserName && i.Password == user.Password);32 if (item != null)33 {34 HttpContext.Session.SetInt32("UserId", item.Id);35 msg.message = "success";36 msg.code = 0;37 return msg;38 }39 else40 {41 msg.message = "用户名或密码验证错误";42 msg.code = 1;43 return msg;44 }45 46 }47 }48 }49 }
2. 创建登录视图
视图主要用于数据的呈现和交互,登录视图对应Login/Index.cshtml页面。主要功能如下:
- 引入需要的客户端组件库。
- 页面布局,主要使用Element组件。
- 登录按钮功能,主要用axios组件库,提交数据到控制器。
登录视图代码如下:
1 @{ 2 Layout = null; 3 } 4 5 6 7校园图书管理系统 8 9 10 11 12 13 14 15 <script src="/lib/vue/dist/vue.min.js"></script> 16 <script src="/lib/element-ui/index.min.js"></script> 17 <script src="/lib/axios/axios.min.js"></script> 18 19 20 21 222347 50 51 <script> 52 var app= new Vue({ 53 el: "#app", 54 data:function() { 55 return { 56 form: { 57 UserName: "", 58 Password: "", 59 Remember: false, 60 } 61 } 62 }, 63 methods: { 64 onSubmit() { 65 console.log("submit!"); 66 axios.post("/Login/Login", { 67 UserName: this.form.UserName, 68 Password: this.form.Password 69 }).then(function (response) { 70 if(response.status==200){ 71 var msg = response.data; 72 if(msg.code=="0"){ 73 window.location="/Home"; 74 }else{ 75 window.alert(msg.message); 76 } 77 } 78 console.log(response); 79 }).catch(function (error) { 80 console.log(error); 81 }); 82 } 83 } 84 }); 85 </script> 86 128 129校园图书管理系统
24254426 4327 2928 30 3231 33 3534 取消 36登录 37
383941 42注册 40
45
46
运行测试
经过以上步骤,登录功能已经做好,运行程序。然后数据账号密码,点击登录进行跳转,如下所示:
登录成功后,如下所示:
以上就是校园图书管理系统的基础环境搭建以及登录功能实现,后续功能再继续介绍。旨在抛砖引玉,一起学习,共同进步。
-
【全球快播报】ASP.NET Core+Element+SQL Server开发校园图书管理系统(一)
随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP NETCore也应运而生。本文主要基于ASP ...
来源: 【全球快播报】ASP.NET Core+Element+SQL Server开发校园图书管理系统(一)
Blazor技术入门
种植牙的高价:被打碎了
为一季度量产做准备!宁德时代申请注册“麒麟电池”商标
MacBook Air迎15岁生日 首次亮相由乔布斯从信封取出
全球报道:市场被国产手游席卷了 日本:课税!
今日最新!男孩寒假送外卖:20天挣7700元 给妈妈2000买年货
热资讯!一加11R现身印度官网:低频版骁龙8+、120Hz高刷屏
当前资讯!法拉利超跑当婚车 雪天接亲上坡频繁打滑 网友:后驱车肯定滑
一次性塑料餐具:开始被禁了
全球热议:关于GIT使用的扫盲知识
【深度解读】卫星通信工作频段
新一代安卓机皇!三星Galaxy S23 Ultra拍照分辨率达12240x16320
环球热点评!旺旺大礼包 经典零食箱62元2.7斤 送礼囤货必备
极端寒流来袭:吉尔吉斯斯坦终年不冻“热湖”罕见被冰封
弟弟发现姐姐首饰装备库原地惊了:被骗好多年!网友求购买链接
天天热资讯!男子网购晾衣杆 却被告知2024年发货!客服回应:说错了
【时快讯】爱优腾收费贵、限制多 网友奉上免费视频攻略:全靠Intel
每日焦点!车祸后发视频庆大难不死 结果被殡葬号关注!男子:别介
热讯:大海送“年货”!烟台海边再现大量海肠 大家抢疯:有人一会捞3千斤赚大
环球时讯:配F1赛车同款发动机能追中国高铁!梅赛德斯AMG ONE正式交付
【全球热闻】液流电池有望“弯道超车”?新技术使其尺寸锐减75% 成本更低
视点!蔚来AR眼镜专利公布:可稳定显示车载信息
AITO问界降价效果一般 李想:销量少的产品、没资格成为别人的竞品
索尼PS5千万别长期竖向放置?反转了!维修店:原装主机别担心
Adversarial Active Learning based Heterogeneous GNN for Fake news Detection-ICDM
环球要闻:linux科普:如何标准的安装和升级软件
vue事件修饰符
《流浪地球2》导演郭帆教刘德华济宁话拜年:父老乡亲们新年快乐
当前播报:不怕零下40℃极寒!最“抗冻”复兴号将在“最北”高铁首次开行
美国一州提议“禁售电动车”:石油、天然气太挣钱了
快报:高手在民间!男子7厘米壶内壁画生肖兔
河北女司机发现大量车“逆行” 真相来了:都没逆行 路口设计问题
环球速讯:AcWing. 1072 树的最长路径
【天天聚看点】微信对话生成器,WeChat对话生成,可生成文字、语音、转账、红包,朋友圈装X神器~
天天简讯:Spring Boot 项目打包 .exe 可执行程序,实战来了!
41光年远 韦伯望远镜首次发现系外行星:跟地球几乎一样大
【热闻】连刷10小时B站无问题!联想小新Pro 14搭载75Wh大电池
天天速读:《黑神话:悟空》定档2024年夏天!NVIDIA:将支持光追和DLSS 3
暴风再被限消未履行总额超8亿 昔日风光变为凄惨落幕
【环球聚看点】十二生肖为什么没有猫咪?真相揭开
如何安装球形门锁
Opengl ES之RGB转NV21
快看点丨A Representation Learning Framework for Property Graphs-KDD19
非常流行的vue库,看这一篇就够了
理想车主夜间驾车中控显示有人追车?官方回应:视觉感知算法Bug
今日精选:一驾校打广告称不识字也能考驾照:3次考不过退费
55%~100%五种浓度:怡浓纯黑巧克力35元起400g大促
环球通讯!开电动车返乡要三思 网友晒高速服务区充电现状:已排成长队
联想小新Pro超能本2023升级140W快充:半小时就可回血66%
算法学习笔记(10): BSGS算法及其扩展算法
前沿资讯!2023年了 游戏还在背锅
第一款8K显示器发售6年:居然没人接班了
天天快资讯:丈夫称老家有别墅 女子回村直呼上当:网友调侃诚不欺我 真纯天然
被中国游客狠狠抛弃:韩国人口连续三年减少 女多男少拉不动内需
环球播报:便宜了2.5元 2023年春节档电影票价格7年来首次下降:你愿意去看吗?
合资家轿之王!新款日产轩逸e-POWER曝光:百公里仅需4升油
今热点:一箭14星成功升空 卫星首图回传:路面汽车清晰可见
AtCoder Beginner Contest 285 解题报告
新一代云原生日志架构 - Loggie的设计与实践
皮俑是什么做成的?皮俑为什么救吴邪?
擅长画虎的画家是?擅长画虎的十大画家
神奇宝贝的观看顺序是什么?神奇宝贝的大结局是什么?
用上半固态电池!赛力斯发布海外新车型SERES 5:订单超2万
国产骄傲!中国年度十大畅销新能源车型:外资仅有特斯拉上榜
每日播报!游客滑雪失控致女生被撞倒后抽搐 医生:危险数极高、常见骨折
拿老款忽悠当新款卖 女车主退车被日系4S店老板辱骂
风调雨顺的意思是什么?风调雨顺的下联是什么?
小年为什么分南方和北方?小年为什么吃麻糖?
液晶显示器故障怎么解决?液晶显示器故障维修大全
qq空间打不开是什么原因?qq空间打不开怎么办?
cf怎么鬼跳没声音?cf鬼跳教程按键手法
土豆网怎么下载?土豆网怎么没有了?
环球热讯:1.PyQt5【窗口组件】小部件-QWidgt
阿里云邮箱怎么注册?阿里云邮箱怎么发送邮件?
女粉丝入手小米13 曾是十年资深果粉:被小米和雷军打动
当前滚动:二手车商要“气晕”!美国已有特斯拉新车价格低于二手车
低调的江西 盛产新能源富豪
2023央视春晚主持人阵容公布:首次迎来双90后
每日头条!衡山雾凇火了 多名游客滑冰下山很危险 景区调整开放时间
Ansible 学习笔记 - 批量巡检站点 URL 状态
世界观速讯丨node和npm如何升级版本
世界信息:把车变成船 比亚迪真会玩
天天报道:《中国奇谭》值得这么夸吗?
【世界播资讯】首搭麒麟电池 全球MPV续航最长!极氪009开启交付
三星Galaxy S23系列售价泄露:12GB+1TB版本超1万元
行驶1900多米!祝融号已在火星留下近4000个“中”字
C#代码整洁之道读后总结与感想
【快播报】私家车与油罐车高速并排堵路 货车司机看不下去 主动让路
环球消息!男子开车时被激光笔照射 瞬间眼前一片黑!专家称可能会永久损伤
世界观点:小编要失业了 美国科技媒体CNET用AI写文章:读者完全没发现
天天快看点丨马斯克回应车主维权:涨价也没人给我补差价 就这吧
视焦点讯!太傲慢!微信更新内容仅“九个字” 网友:怕大家知道更新了什么吗?
全球速看:油车也有续航焦虑 高速服务区爆满:排队一小时 加油限量100元
消息!小米上架抗原试剂盒:19.9元5个 现货供应
《三体》电视剧开播 广受好评 网友:没看过原著的也被深深吸引
世界最新:2023春节档预售票房破亿:《流浪地球2》排片率第一 吴京/刘德华主演
世界今日报丨Recyclerview列表视频自动播放方案
观天下!QSAN A Quantum-probability based Signed Attention Network for Explainable Fa
剧版《三体》高热开播:收视率蹿升至第一、破腾讯视频记录