ASP.NETCoreMVC打造一个简单的图书馆管理系统(修正版)(四)图书信息的增删改查NanaseRuri

《ProASP.NETMVC5》、《锋利的jQuery》

此系列皆使用VS2017+C#作为开发环境。如果有什么问题或者意见欢迎在留言区进行留言。

本章内容:分页、自定义HtmlHelper、通过模态窗口确认是否提交表单、上传文件、获取文件、预览文件、select元素、表单提交数组、checkbox、js确认关闭页面

注:在对EF中的数据进行更改时,需要调用对应Context的SaveChange方法才能对更改进行保存。

一、视图分页视图模型

首先创建一个视图模型用于确定每页的书籍数、页数

1publicclassPagingInfo2{3publicintTotalItems{get;set;}4publicintItemsPerPage{get;set;}5publicintCurrentPage{get;set;}67publicintTotalPages8{9get=>(int)Math.Ceiling((decimal)TotalItems/ItemsPerPage);10}11}

然后创建另一个视图模型用于确定该分页信息以及各分页的书籍:

1publicclassBookListViewModel2{3publicIEnumerableBookDetails{get;set;}4publicPagingInfoPagingInfo{get;set;}5}

创建一个自定义HtmlHelper用于在视图中使用Razor语法获取分页,在ASP.NETCore中TagBuilder继承自IHtmlContent,不能直接对TagBuilder进行赋值,需调用MergeAttribute方法和InnerHtml属性的AppendHtml方法编写标签;并且TagBuilder没有实现ToString方法,只能通过其WriteTo方法将内容写到一个TextWriter对象中以取出其值:

二、编辑图书信息页面的首页

在此准备使用Session更快地获取图书信息,为了在使用时更直观,此处对Session类进行扩展:

1publicstaticclassSessionExtensions2{3publicstaticvoidSet(thisISessionsession,stringkey,Tvalue)4{5session.SetString(key,JsonConvert.SerializeObject(value));6}78publicstaticTGet(thisISessionsession,stringkey)9{10varvalue=session.GetString(key);11returnvalue==nulldefault(T):JsonConvert.DeserializeObject(value);12}13}

创建一个BookInfo控制器:

1publicclassBookInfoController:Controller2{3privateLendingInfoDbContext_lendingInfoDbContext;45publicBookInfoController(LendingInfoDbContextcontext)6{7_lendingInfoDbContext=context;8}9}

创建学生浏览的首页:

在此使用Session获取书籍列表:

创建BookInfo控制器并确定其中每个分页的书籍数,使用Session获取更快地获取书籍信息:

1publicclassBookInfoController:Controller2{3privateLendingInfoDbContext_context;4privatestaticintamout=4;56publicBookInfoController(LendingInfoDbContextcontext)7{8_context=context;9}1011publicIActionResultIndex(stringcategory,intpage=1)12{13IEnumerablebooks=null;14if(HttpContext.Session!=null)15{16books=HttpContext.Session.Get>("bookDetails");17}18if(books==null)19{20books=_context.BooksDetail;21HttpContext.Session.Set>("books",books);22}23BookListViewModelmodel=newBookListViewModel()24{25PagingInfo=newPagingInfo()26{27ItemsPerPage=amout,28TotalItems=books.Count(),29CurrentPage=page,30},31BookDetails=books.OrderBy(b=>b.FetchBookNumber).Skip((page-1)*amout).Take(amout)32};33returnView(model);34}3536publicFileContentResultGetImage(stringisbn)37{38BookDetailstarget=_context.BooksDetail.FirstOrDefault(b=>b.ISBN==isbn);39if(target!=null)40{41returnFile(target.ImageData,target.ImageMimeType);42}43returnnull;44}45}

视图页面:

33行利用BookListViewModel中PagingInfo的CurrentPage获取各序号,32行中使img元素的src指向BookInfoController的GetImage方法以获取图片:

在此同样使用Session获取书籍列表:

利用[Authorize]特性指定Role属性确保只有Admin身份的人才能访问该页面:

1[Authorize(Roles="Admin")]2publicIActionResultBookDetails(stringisbn,intpage=1)3{4IEnumerablebooks=null;5BookListViewModelmodel;6if(HttpContext.Session!=null)7{8books=HttpContext.Session.Get>("bookDetails");9}10if(books==null)11{12books=_context.BooksDetail.AsNoTracking();13HttpContext.Session.Set>("books",books);1415}16if(isbn!=null)17{18model=newBookListViewModel()19{20BookDetails=newList(){books.FirstOrDefault(b=>b.ISBN==isbn)},21PagingInfo=newPagingInfo()22};23returnView(model);24}25model=newBookListViewModel()26{2728PagingInfo=newPagingInfo()29{30ItemsPerPage=amout,31TotalItems=books.Count(),32CurrentPage=page,33},34BookDetails=books.OrderBy(b=>b.FetchBookNumber).Skip((page-1)*amout).Take(amout)35};36returnView(model);37}

BookDetails视图,confirmDelete为删除按钮添加了确认的模态窗口;

53行为glyphicon为Bootstrap提供的免费图标,只能通过span元素使用:

Index页面:

BookDetails页面:

三、添加书籍信息

在此为了接受图片需要使用IFormFile接口,为了使图片以原有的格式在浏览器中显示,需要用另一个字段ImageType保存文件的格式;

39页使用TempData传递一次性信息告知书籍添加成功,在传递完成后TempData将被立即释放:

指定input的name属性为image以在上传表单时进行模型绑定,指定其accept属性令其打开文件选择框时只接收图片。

JS代码为input添加onchange事件以预览上传的图片,并为关闭或刷新页面时添加模态窗口进行确认,同时为提交按钮添加事件以重置window.onbeforeunload事件从而不弹出确认窗口:

四、删除书籍信息

删除书籍的动作方法:

此处通过在之前的BookDetails视图中指定input元素的type为checkbox,指定name为isbns以实现多个字符串的模型绑定:

1[Authorize(Roles="Admin")]2[HttpPost]3[ValidateAntiForgeryToken]4publicasyncTaskRemoveBooksAndBookDetails(IEnumerableisbns)5{6StringBuildersb=newStringBuilder();7foreach(varisbninisbns)8{9BookDetailsbookDetails=_lendingInfoDbContext.BooksDetail.First(b=>b.ISBN==isbn);10IQueryablebooks=_lendingInfoDbContext.Books.Where(b=>b.ISBN==isbn);11_lendingInfoDbContext.BooksDetail.Remove(bookDetails);12_lendingInfoDbContext.Books.RemoveRange(books);13sb.Append("《"+bookDetails.Name+"》");14await_lendingInfoDbContext.SaveChangesAsync();15}16TempData["message"]=$"已移除书籍{sb.ToString()}";17returnRedirectToAction("BookDetails");18}结果:

五、编辑书籍信息

动作方法:

此处视图与之前AddBookDetails大致相同,但在此对一些视图中的ISBN字段添加了readonly属性使它们不能被直接编辑:

结果:

六、查询特定书籍

1publicasyncTaskSearch(stringkeyWord,stringvalue)2{3BookDetailsbookDetails=newBookDetails();4switch(keyWord)5{6case"Name":7bookDetails=await_context.BooksDetail.FirstOrDefaultAsync(b=>b.Name==value);8break;9case"ISBN":10bookDetails=await_context.BooksDetail.FirstOrDefaultAsync(b=>b.ISBN==value);11break;12case"FetchBookNumber":13bookDetails=await_context.BooksDetail.FirstOrDefaultAsync(b=>b.FetchBookNumber==value);14break;15}1617if(bookDetails!=null)18{19returnRedirectToAction("EditBookDetails",new{isbn=bookDetails.ISBN});20}2122TempData["message"]="找不到该书籍";23returnRedirectToAction("BookDetails");24}

THE END
1.计算机毕业设计asp.net图书管理系统毕设图书管理系统毕业设计本文档详细介绍了基于ASP.NET的图书管理系统的设计与实现,包括可靠性分析、可行性研究、系统需求和设计。系统采用Microsoft Visual Studio 2008和SQL Server 2005,具备借阅证办理、图书借还、信息查询等功能,同时增强了安全性与效率,减少了图书管理员的工作量。 https://blog.csdn.net/xy520chxu/article/details/136392568
2.图书管理系统asp.netmob649e8157ebce的技术博客图书管理系统 ASP.NET 介绍 图书管理系统是一种用于管理图书馆中图书信息的系统,它可以帮助图书馆管理图书的借阅、归还、馆藏管理等方面的工作。本文将介绍如何使用 ASP.NET 构建一个简单的图书管理系统,并提供相应的代码示例。 环境准备 在开始之前,我们需要准备以下环境: https://blog.51cto.com/u_16175448/7258130
3.基于ASP.NET技术的图书管理系统的设计与实现本系统采用当前流行的B/S(Browser/Sever)模式,采用ASP.NET技术,使用SQL Server 2017做为数据库服务器,运用了互联网网络技术,对图书馆的日常工作进行管理,实现了缩减图书馆的管理成本,提高了应用水平。本系统的优点是将图书馆的数据进行了计算机网络化管理,实现了图书馆数据管理的自动化,提升了效率。在使用了该系统https://mall.cnki.net/magazine/article/CMFD/1019008455.nh.htm
4.ASP.NET实现图书管理系统的步骤详解实用技巧这篇文章主要介绍了ASP.NET图书管理系统简单实现步骤,本文通过实例截图展示的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 一、数据库添加 1.用户信息 2.图书信息表 3.图书借阅信息表 https://www.jb51.net/article/176736.htm
5.ASP.NET图书管理系统简单实现步骤「建议收藏」本人第一次写博客,有什么错的地方希望大神们指教,我也希望给才接触的asp.net的人有所帮助,有需要直接加我:1076396021 (不白给) 有任何问题都可以问我,给调试 感谢大家的阅读和支持,能给你们带来帮助也是我成长的一步 直接加我 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162915.html原文链https://cloud.tencent.com/developer/article/2107238
6.基于ASP.NET技术的图书馆管理系统的设计与实现本文首先简要叙述图书馆管理系统的研究背景和意义,并在此基础上介绍了图书馆管理的相关概念以及国内外目前的研究状况。接下来对该系统使用的技术做一个简单的介绍,并从需求的角度进行了可行性分析、需求分析和基本功能的设计,从而完成了系统的总体架构设计和安排。通过采用微软的ASP.NET动态网站开发技术,以SQL SERVER https://cdmd.cnki.com.cn/Article/CDMD-10183-1016089501.htm
7.图书馆管理系统ASP.NET2.0源码,学教实践,Asp.net源码图书馆管理系统ASP.NET2.0源码 图书馆管理系统ASP.NET2.0源码免费 2007-05-15 11:32:11 源码类型: B/S 开发环境: VS2022 + SQL2019 开发语言: C# 标签: 图书管理 修改密码 评分: 收藏2527 次|关注50487 次|下载1854 次 免费 交付物:?源码包https://www.51aspx.com/code/LibSys2000
8.C#ASP.NET+Vue高级网上书店管理系统:集成大数据分析,智能这些问题导致了用户体验下降,管理效率低下,严重影响了书店的运营效益。针对这些问题,本课题旨在利用C# ASP .NET和Vue.js等先进技术,开发一个高级网上书店管理系统。该系统将集成大数据分析技术,实现智能推荐图书,优化用户购物体验,提高管理效率,从而解决现有系统存在的问题。https://www.jianshu.com/p/8a9923f101a8
9.在线简单书店程序[源码+系统说明书]ASPNET+SQLBookShopASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—https://www.iteye.com/resource/cleopard-8460723
10.asp.net428中等图书管理三层开发语言:asp.net.模式:B/S.数据库:sqlserver.开发工具:vs,sqlserver.论文字数:1万左右. 功能实现 读者通过该系统管理图书信息、查看图书信息、管理借还书记录、进行图书分类等。图书管理人员通过该系统可以添加书单、维护书单、查询图书借出及还入情况、查询图书在馆情况等。基于Ajax和.NET的图书管理系统模块包括了:http://www.taobysj.com/net/973.html
11.网站毕业设计选题同时对系统的开发原理、系统的功能特点和设计方案进行了介绍。【关键词】Asp.net 新闻 管理 数据库随着internet的普及,越来越多的企业建立了自己的www网站,企业通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。其中新闻管理系统是构成企业网站的一个重要组成部分,它担负https://www.diyifanwen.com/w/wangzhanbiyeshejixuanti/
12.学校图书馆管理信息系统开发的可行性研究报告(通用10篇)该次系统开发的对象是银杏酒店管理学院,开发该系统的目的主要是对有关读者,书籍,借书,还书,存书等方面的信息进行统一管理,本系统结构分为读者信息管理模块、书籍信息管理模块、借阅信息管理模块和管理者信息管理模块。图书馆信息化是对信息管理系统化、科学化要求甚高的单位。通过该系统图书馆在很多个方面的效率都得到https://www.360wenmi.com/f/fileiv3v59e5.html
13.ASP.NET(C#)动态网站开发案例教程第3版——主编本书涵盖了ASP. NET概述、服务器控件、网站设计、页面跳转与状态管理、ASP. NET数据库编程、ASP. NET高级应用技术、ASP. NET应用程序配置与部署、综合案例一产 品在线订购系统等方面。全书引人“校友录系统”“图书管理系统”“产品在线订购系统”3个网站开发实例,分别从理论、实训和综合案例的角度介绍动态网站开发http://www.cmpedu.com/books/book/5601194.htm
14.里诺crm系统客户关系管理软件完全免费的在线crm里诺客户管理系统(12月03日),防员工走私单,转私账,离职带走客户!7天就能用好的客户关系管理系统,提高销售签单率,把握客户。咨询电话:0714-6305599http://crm.lenosoft.net/
15.asp.net毕业设计参考文献(2020年最新文献100个),参考文献.docx基于Asp.NetMVC框架的矿山地质环境信息系统的研究与实现[J].城市地质,2020,15(01):97-102.[11]陈龙,陈婷,袁莹静.基于ASP.NET的口红专柜系统的设计与实现[J].软件,2020,41(03):137-140.[12]徐昌豪,邓舒婷.基于ASP.NET手机图书管理系统实现的研究[J].电脑知识与技术,2020,16(08):73-76.[13]单佳宜.https://www.renrendoc.com/paper/235552510.html
16.基于ASP.NET的网上书店系统设计与实现硕士本项目包括在线商城和后台管理系统两大部分构成,采用B/S结构的N层模型进行设计,使用目前国内外电子商务平台开发的主流技术进行设计。在技术实现上,本项目采用.NET Framework2.O为开发平台和运营支撑平台,以SQL Server2005提供数据库服务,使用C#语言和ASP.NET、ADO.NET技术进行项目的开发。 本项目的开发与研究旨在为我https://www.zhangqiaokeyan.com/academic-degree-domestic_mphd_thesis/020314396996.html
17.asp.netSpringbootSSMvue3高校图书馆管理系统的设计与实现可选语言:java、web、PHP、asp.net、javaweb、C#、python、 HTML5、jsp、ajax、vue3、uniapp 高校图书馆管理系统的设计与实现 对待繁多的图书,有一套完整的图书管理系统,不仅仅能节省管理时间,更重要的是电子化的管理更方便统计借阅排行信息。本系统为图书馆管理系统,方便用户借阅和管理员管理,在一定程度上优化了http://www.hjclled.cn/?p=7766
18.清华大学出版社图书详情本书讲述了ASP.NET MVC网站设计中模型、视图、控制器等核心知识点,完整设计实现了美妆网和图书借阅管理系统两个实例。本书注重实用性和可读性,以Visul Studio 2017为开发平台,以SQL Server 2012为数据库管理系统,以C#为程序设计语言,以Razor为视图引擎。本书内容上深入浅出、通俗易懂、易于自学;结构上按功能分类,http://www.tup.tsinghua.edu.cn/booksCenter/book_08395701.html