(作者:郭鑫 撰写时间:2019年5月7号)
删除比起新增和修改那就是简单多了,删除在HTML的部分基本没什么,一般就一个删除按钮。主要就是js和控制器部分的代码。
HTML部分
在HTML部分,这里的删除就只是构建了一个删除的按钮,再有就是获取到需要删除的数据的主键ID。因为这里的删除按钮是放在layui表格里的自定义操作列里,所以可以直接获取到表格里的ID,直接拼接到按钮里即可。
JS部分
删除时的JS部分就是直接删除了,为按钮绑定一个点击事件,把刚刚拼接到的ID传到这个事件里。删除前要提示一下用户是否要确定要删除,提示框用的时layui里面的提示框,可以点击确定或者取消。Confirm的内容由三个部分组成,第一个:提示的内容;第二个:提示框的款式;第三个:点击确定后的回调函数。弹出的这个提示框他自己是不会直接关闭的,得要你手动关闭,要关闭无非两种情况,一是取消二是确定,取消的关闭方法插件已经写好了,所以只需要在点击确定是关闭,也就是在回调函数里把这个提示框关闭掉。
layer.close(index)就是关闭这个提示框的方法,index就是回调函数的参数。
提示框点击确定后就要对数据进行处理了,也就是开始删除数据了,删除数据也需要
数据库进行请求,请求要写在回调函数里面。因为删除时是要根据该条数据的主键ID进行删除,所以请求控制器部分时需要把主键ID作为参数传到控制器。
请求数据用post请求,post请求写法:post(“url”,{参数},回调函数,预期返回数据的格式);
第一个参数:请求控制器的路径
第二个参数:传参,用键值对的形式。键(“:”前面的单词)要和控制器的接收值一致,值(“:”后面的单词)要与js的获取变量时声明的值一致。
第三个参数:回调函数,请求完成后要执行的内容。
第四个参数:预期返回数据的格式。
请求结束后,就要判断一下删除是否成功,如果成功就要刷新一下页面显示数据的表格,然后还有提示一下是否删除成功。
控制器部分
控制器部分的接收值只需要接收页面上传过来的主键ID即可,方法里面第一步要做的就是声明几个变量,一般两个,一个字符串类型的,用于记录需要返回页面的字符串;还有一个是布尔类型的,用于记录代码运行的状态。一般新增需要返回的就是这两个内容,可以直接在一开始就把返回写好,能避免报错。返回的写法如下所示,如果只有一个变量返回页面就不用new和{},直接把变量写上就好,如果有多个变量就像下面写法一样用英文状态下的逗号隔开,有多少个可以写多少个。
删除前必须要进行查询,根据传过来的主键ID查询出要删除的数据,因为一个主键只能查出一条数据,所以查询数据是要使用single,使用single时很容易出错,因此要捕获一下异常。
接着就可以删除了,删除就是一句代码的事。
删除了之后就要判断一下删除是否·成功,myModel.SaveChanges()获取到的值是数据库改变受影响的条数,所以只要判断intR是否大于0就可以了,大于0则说明有数据受影响,就是删除成功了。成功之后要把代码执行的状态改为true,失败改为false,再分别设置一下返回页面的字符串,那么删除就成功了。
虽然删除成功了,但是这样的删除不一定是对的,因为表与表之间可能还有着联系,就拿这学院的来说,学院下可能还有着专业信息、年级信息、教师信息等等,所以在删除之前要检查一下该学院下是否拥有着这些信息,有就不能删除,否则这些信息就成了垃圾数据,查询不出来了。这以年级为例子。查询时根据传过来的ID为条件。如果查出来的数据条数大于0条就说明有数据了,就把状态设置为false然后直接返回到页面,否则就继续执行下一步操作。