ASP.NET.MVC删除数据的疑难杂症

开发工具与关键技术:VS2015  MVC
作者:超级小贱贱
撰写时间:2019年5月08日

① 拼接字符串,并对结尾多余的字符进行分割处理
在删除数据中,可以一条一条的删,也可以多条选择并一块儿删除,但是,
每条数据都有着对应的主键ID,删除前,都要获取到对应的主键ID
多条数据一起删除,就需要用到对它们的ID进行拼接
我利用了(;)分号这个字符来拼接选择到的多个ID值,比如ID=20和ID=21,就会显示成(20;21;),使用的代码方法:studentIds += checkStatus.data[i].studentID + “;”; //拼接字符串
现在问题又来了,末尾处多了个(;)就又要对它进行处理,此时就会用到一个 substring()方法。substring() 方法用于提取字符串中介于两个指定下标之间的字符,并且substring(start,stop) 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。比如说(20;21;),在20前面其实是有个0的,0就是start,开始,而结尾处有个(;)分号,就给他写个方法studentIds = studentIds.substring(0, studentIds.length - 1);获取到studentIds整个的长度,在对症下药就可以把多余的一个(;)分号去掉。
视图层那边已经写好方法了,回到控制器写处理方法。控制器这边用的是split(),用于把一个字符串分割成字符串数组,这边我的写法是
在这里插入图片描述
分割完之后就会变成这样[20;21;”20”,”21”]

② 删除代码的逻辑
一般都是先查询一遍数据,然后在删除,此时就要去调用myModels层里面要删除的主表,再用Remove 这个方法来删除,
myModels.PW_Student.Remove(dbStudent);
但是单单这一个没用,还要有更多的判断条件,所以就先获取到删除对象的userId

在这里插入图片描述
这里的问号大家又有问题了,这个问号“?”呢是一个显示转换,也相当于是一个强制转换,在这里边指的是前面的那个int数据类型允许为空,因为在设计的时候UserID被设定为Nullable,意思就是允许为空,所以在这里不加’?’的话就会报错。
接下来就要根据上面那个用户(UserID)去用户明细表里面查询出用户的信息了。
//用户角色明细表

PW_UserRoleDetail dbUserRoleDetail=(from tbUserRoleDetail in myModels.PW_UserRoleDetail
                                    where tbUserRoleDetail.UserID == UserId
                                select tbUserRoleDetail).Single();

查询完之后,就在用Remove 这个方法来删除

myModels.PW_UserRoleDetail.Remove(dbUserRoleDetail);

紧接着就是根据用户(UserID)回用户表查询用户信息

PW_User dbUser = (from tbUser in myModels.PW_User
                  where tbUser.UserID == UserId
              select tbUser).Single();

查询完之后继续使用Remove这个方法来删除。

myModels.PW_User.Remove(dbUser);

在删除之前所要先查询的东西,基本都是从“用户表”和“用户明细表”这两张基本表去查询删除的,想多几张也无所谓,看个人需求吧。

③ 删除完成保存数据
最后就是删除完成之后的保存数据方法
//保存数据

myModels.SaveChanges();
countSuccessDel++;(这个是开头声明的东西,作用是记录删除成功的数据条数)

在这里插入图片描述
毕竟无论是删除成功还是删除失败,都应该弹出一个模态框来提示是否删除成功,还是删除失败,所以就用一个if……else来扩着所有的判断条件,在声明一个“string”类型的strMsg返回值等于“failed”,用来删除失败的时候返回一个模态框,内容是“参数异常”。
然后下面两个“int”类型的自定义名称就是用来记录“删除成功”or“删除失败”的数据条数,在运用到下面的返回模态框的提示语:
在这里插入图片描述
比如说删除成功的话,浏览器就会这样弹出模态框提示:
在这里插入图片描述
然后控制器这边就完成的差不多了。

④ 视图层最后的完善
删除数据之前先要能够选中当前要删除的那一行,如果选中行数据都获取不到,那谈何删除呢?
首先就是要获取到选中行的数据,调用layui插件的方法来实现,然后再到控制台输出一下

var checkStatus = layuiTable.checkStatus("tabStudent");
            console.log(checkStatus);

接着使用if……else判断语句扩起来,给进判断条件

if (checkStatus.data.length > 0){}  

()里面的意思就是保证获取的选中行是大于零的,否则就用else返回提示

else {
                    layer.alert("请选择需要删除的数据");
        }

结尾再用一个判断提示

layer.confirm("您确定要删除选中的" + checkStatus.data.length + "条学生信息?", { icon: 3, title: "提示" }, function (){}

括起来,所对应的功能是
在这里插入图片描述
如删除成功,就会重新刷新整个表格,将删除后的数据从新的表格当中移除掉并显示出来tabStudent.reload();//刷新表格
若删除失败,则弹出提示框在控制器那边的参数异常

最后呢批量删除信息就完成了,主要就是得注意拼接字符串和分割字符串的时候的判断方法,还有不要删除空气,获取不到数据怎么删除,对不对?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值