开发工具与关键技术:VS2015 MVC
作者:超级小贱贱
撰写时间:2019年5月27日
事务是个好东西,要么一起成功,要么一个失败,下面我将说明一下事务的使用方法,拿个新增数据来做例子吧。
开局先声明一个新的对象ReturnJsonVo returnJson = new ReturnJsonVo();,
然后紧接着重要部分来了,使用事务方法就必须从头开始,直接调用本身自带的事务类表using (var scope = new TransactionScope())
,剩下的就是正常的新增流程:整体用try……catch捕捉错误,(这里的新增是新增用户类型/角色的那一块儿),先新增用户类型UserType,fmUserType.ToVoidNo = true;
一般某些功能比如开关按钮等之类的都是默认先开着的(先启用),这里就默认启用该角色 ,然后在添加一个时间fmUserType.FoundTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
最后加入新增关键句myModel.SYS_UserType.Add(fmUserType);
和myModel.SaveChanges();
。接着在获得新增的UserTypeId,int userTypeId = fmUserType.UserTypeID;
然后开始新增权限,并分割modularDetailIds里的字符串,用(,)来分割string[] strings = modularDetailIds.Split(',');
中间的话就用foreach循环语句+if语句来判断筛选数据,然后添加多条数据的关键代码myModel.PW_Jurisdiction.AddRange(listJurisdiction);和myModel.SaveChanges();
接下来关键地方又来了,处理完,添加完数据,紧接着就得提交事务scope.Complete();,然后在返回一系列的returnJson来提醒保存成功的提示和保存失败的提示,控制器这边就完成了。
在来到视图层,首先Html那里,包裹着的form表单在打开的时候记得请求的路径action“……………”要给到刚刚在控制器那边写的方法名称,然后在去到JS层那边首先声明一些变量
var tabModular;//表格
var layerIndex = 0;
var layer, layuiTable;//保存layui模块以便全局使用
var arrModularDetailIds = new Array();//记录用户勾选的模块明细id
在给一个加载事件,加载和初始化layui模块,搭建好表格,在写个注册表格中的点击事件,
接着就是自定义操作列,然后关键的地方来了,点击保存的按钮,还要确保数据保存到数据库里面,否则一切都是徒劳的。
首先找到保存按钮的点击事件并给它一个方法function submitForm()
,然后按照数字顺序的排序函数 array[] 数字排序,从小到大arrModularDetailIds.sort(function (a, b) { return a - b; });
接着获取到上面查询input框里面的ID并给方法
var userType = $("#UserType").val();-----》名称
var describe = $("#Describe").val();------》描述
然后就是给这两个新增框一个if……else判断
if (userType != null && describe != null && userType != "" && describe != ""){
打开加载层layerIndex = layer.load();
再用jquery.form.min.js里面的ajax方法来提交表单
$("#formUserType").ajaxSubmit(function (message){
新增完一定要给个功能ayer.close(layerIndex);//关闭加载层
layer.msg(message.Text, { icon: 0, skin: "layui-layer-molv" });
if (message.State == true) {
closeThis(message.Text);
}
else{
layer.msg("请填写完整", { icon: 0, skin: "layui-layer-molv" });
}
保存按钮就完成了。
然后就是关闭的按钮,直接获取到关闭按钮的点击事件,给个方法,在调用父页面的方法即可
function closeThis(msg) {
if (parent != null && parent != undefined) {
//调用父页面的方法
parent.closeModal(msg);
}
}
个人理解,事务:要么一起成功,要么一起失败,OK!