技术经验分享:ASP.NETCoreMVC打造一个简单的图书馆管理系统(修正版)(七)学生信息增删

简介: 技术经验分享:ASP.NETCoreMVC打造一个简单的图书馆管理系统(修正版)(七)学生信息增删

前言:


本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作。


本系列文章主要参考资料:


微软文档:


《Pro ASP.NET MVC 5》、《锋利的 jQuery》


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


项目 github 地址:


本章内容:Ajax 提交自定义对象、Ajax 提交数组


此处全部都在 /AdminAccount/Index 页面完成。


一、学生信息编辑首页


创建一个 Admin 控制器用于编辑学生信息:


1 【Authorize(Roles = "Admin")】


2 public class AdminAccountController : Controller


3 {


4 private UserManager _userManager;


5


6 public AdminAccountController(UserManager userManager)


7 {


8 _userManager = userManager;


9 }


10


11 public IActionResult Index()


12 {


13 ICollection students = _userManager.Users.ToList();


14 return View(students);


15 }


16 }


视图:


@using LibraryDemo.Models.DomainModels


@model IEnumerable


@{


ViewData【"Title"】 = "AccountInfo";


Student stu = new Student();


}



学生信息




@if (!@Model.Any())


{



}


else


{


foreach (var student in Model)


{



@student.UserName


@student.Name


@Html.DisplayFor(m => student.Degree)


@student.PhoneNumber


@student.Email


@student.MaxBooksNumber


}


}


结果:


二、增加新学生


此处打算使用 Ajax 来实现无刷新页面更新,因此动作方法返回类型为 Json 。


动作方法:


此处需注意在参数处添加 【FromBody】 修饰,否则无法读取来自页面的数据。


为节省带宽,此处仅返回添加的学生的 JSON 。


1 【HttpPost】


2 public async Task AddStudent(【FromBody】Student student)


3 {


4 if (_userManager.CreateAsync(student,"123456").Result.Succeeded)


5 {


6 return await AddedStudent(student.UserName);


7 }


8


9 return Json("Failed");


10 }


11


12 public async Task AddedStudent(string userName)


13 {


14 Student student=await _userManager.Users.FirstOrDefaultAsync(s => s.UserName == userName);


15 return Json(new


16 {


17 //代码效果参考:http://www.jhylw.com.cn/551034413.html

userName = student.UserName,

18 name = student.Name,


19 degree = student.Degree == Degrees.CollegeStudent ? "本科生" : (student.Degree == Degrees.Postgraduate ? "研究生" : "博士生"),


20 phoneNumber = student.PhoneNumber,


21 email = student.Email,


22 maxBooksNumber = student.MaxBooksNumber


23 });


24 }


在视图中添加 JS 代码:


此处 JS 代码先是点击 添加书籍 按钮插入一行用于编辑的区域,然后通过插入区域的提交按钮提交信息,在信息成功返回后删除原来进行编辑的行,通过返回的信息添加新的行。


27-33 中由于 ASP.NET Core 后台返回 JSON 数据时会对数据的键的首字母进行小写处理,因此此处读取属性也是使用首字母小写,在后台的键也是使用首字母小写加以强调。


1


2 function //代码效果参考:http://www.jhylw.com.cn/294336935.html

postAddStudent() {

3 $.ajax({


4 url: "@Url.Action("AddStudent")",


5 contentType: "application/json",


6 method: "POST",


7 data: JSON.stringify({


8 UserName: $("#UserName").val(),


9 Name: $("#Name").val(),


10 Degree:$("#Degree").val(),


11 PhoneNumber: $("#PhoneNumber").val(),


12 Email: $("#Email").val(),


13 MaxBooksNumber: $("#MaxBooksNumber").val()


14 }),


15 success: function (student) {


16 addStudentToTable(student);


17 }


18 });


19 }


20


21 function addStudentToTable(student) {


22 var studentList = document.getElementById("studentList");


23 var studentInfo = document.getElementById("studentInfo");


24 studentList.removeChild(studentInfo);


25


26 $("#studentList").append(+</p> <p>27 `<input type="checkbox" name="userNames" value="${student.userName}" />` +</p> <p>28 `${student.userName}` +</p> <p>29 `${student.name}`+</p> <p>30 `${student.degree}` +</p> <p>31 `${student.phoneNumber}` +</p> <p>32 `${student.email}` +</p> <p>33 `${student.maxBooksNumber}` +</p> <p>34);


35 }


36


结果:


三、 批量移除学生


此处亦可以只返回更新过的元素,但为了演示 ASP.NET Core 使用 Ajax 对数组进行处理,故返回新的 Student 列表:


1 【HttpPost】


2 public async Task RemoveStudent(【FromBody】IEnumerable[span style="color: rgba(0, 0, 255, 1)">string

3 {


4 Student removedStudent;


5 foreach (var userName in userNames)


6 {


7 removedStudent =await _userManager.FindByNameAsync(userName);


8 if (removedStudent!=null)


9 {


10 await _userManager.DeleteAsync(removedStudent);


11 }


12 }


13 return GetStudentData();


14 }


15


16 public JsonResult GetStudentData()


17 {


18 var students = _userManager.Users.Select(s =>new


19 {


20 userName=s.UserName,


21 name=s.Name,


22 degree=s.Degree==Degrees.CollegeStudent?"本科生":(s.Degree==Degrees.Postgraduate?"研究生":"博士生"),


23 phoneNumber = s.PhoneNumber,


24 email = s.Email,


25 maxBooksNumber = s.MaxBooksNumber


26 });


27 return Json(students);


28 }


视图添加 JS 函数:


18 行为数组元素的提交方式,不需像之前一样—— {values:values},否则无法进行数据绑定而导致后台接收到空数据。


为了对表格进行更新,先是通过 jQuery 获取了 tbody 的部分,清空后添加来自后台的新信息:


1


2 function confirmDelete() {


3 var userNames = document.getElementsByName("userNames");


4 var message = "确认删除";


5 var values = 【】;


6 for (i in userNames) {


7 if (userNames【i】.checked) {


8 message = message + userNames【i】.value+",";


9 values.push(userNames【i】.value);


10 }


11 }


12 message = message + "?";


13 if (confirm(message)) {


14 $.ajax({


15 url: "@Url.Action("RemoveStudent")",


16 contentType: "application/json",


17 method: "POST",


18 data: JSON.stringify(values),


19 success: function(students) {


20 updateTable(students);


21 }


22 });


23 }


24 }


25


26 function updateTable(data) {


27 var body = $("#studentList");


28 body.empty();


29 for (var i = 0; i < data.length; i++) {


30 var person = data【i】;


相关文章
|
6月前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
77 4
|
4月前
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
3月前
|
开发框架 NoSQL .NET
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
|
5月前
|
开发框架 前端开发 .NET
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
集成于VS 2019,EXT.NET前端和ASP.NET后端,搭配MSSQL 2018数据库。系统覆盖样品管理、数据分析、报表和项目管理等实验室全流程。应用广泛,包括生产质检(如石化、制药)、环保监测、试验研究等领域。随着技术发展,现代LIMS还融合了临床、电子实验室笔记本和SaaS等功能,以满足复杂多样的实验室管理需求。
81 3
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
|
5月前
|
Web App开发 开发框架 .NET
ASP淘特二手房房地产系统源码
ASP淘特二手房房地产系统源码主要提供了房屋信息出售、出租、求购、求租、合租等信息的发布平台。 本系统已提供成熟的赢利模式,通过向中介会员提供发布信息平台收取会员费为网站的主要收入来源,中介会员申请开通后,可以添加经济人和管理中介公司所属的房源信息。可在线续费购买服务期(支付宝接口)、购买置顶等。
65 2
|
6月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
78 0
|
6月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
118 0
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
38 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
58 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
47 0