保存新增

开发工具与关键技术:MVC
作者:文泽钦
撰写时间:2019年5月3日

初步开启验证电话、手机号码,防止用户乱输入,除了数字可以输入,其他字母中文或者符号是输入不进去的:

<input type="text" class="form-control" id="IsCellphone" name="Cellphone" autocomplete="off" onkeyup='this.value=this.value.replace(/\D/gi,"")' />

保存新增的方法,获取表单里对应的值:

function saveInsert() {
//获取每个需要接收的值,每个值都需要要声明一个变量接收新增form表单里传过来的值
var employeeNumber = $("#formInsertExaminee [name='EmployeeNumber']").val();//编号
var employeeName = $("#formInsertExaminee [name='EmployeeName']").val();//姓名
var phone = $("#formInsertExaminee [name='Phone']").val();//电话
var cellphone = $("#formInsertExaminee [name='Cellphone']").val();//手机
var departmentID = $("#formInsertExaminee [name='DepartmentID']").val();//部门
var positionID = $("#formInsertExaminee [name='PositionID']").val();//职位
var address = $("#formInsertExaminee [name='Address']").val();//地址
var remark = $("#formInsertExaminee [name='Remark']").val();//备注
//电话信息验证,正则表达式:第一位数字是0开头或者是8,而且不能是字母,并且不能少于7位,大于11位数
var NumPhone = /(0|8)\d{6,10}$/;
 	if (!NumPhone.test(phone)) {//if如果不满足
      	  layer.alert("电话信息有误,请输入正确的数据!", { icon: 0, title: "来自狄仁杰的关怀" });
       	  return;
        }
//电话信息验证,正则表达式:只能是1开头的,不能是字母,不能低于&大于11位数
var NumCellphone = /(1\d{10}$)/;
	  if (!NumCellphone.test(cellphone)) {//if如果不满足
        layer.alert("手机信息有误,请输入正确的数据!", { icon: 0, title: "来自狄仁杰的关怀" });
        return;
        }

写到这就可以测试一下写的正则表达式写能不能匹配,我写的正则表达式还有一些小小的毛病还没有修改,我只是简单的匹配出来电话、手机号码:
在这里插入图片描述

//判断数据完整性,判断部门、职位id是否大于零,姓名、电话、手机、地址是否为空,不用验证为不为空的就不用判断,比如备注可以为空,就不用判断
 if (departmentID > 0 && positionID > 0 && employeeNumber != "" && employeeName != "" && phone != "" && cellphone != "" && address != "") {
   //信息完整,打开加载层
   var layIndex = layer.load();
   //提交表单
   $("#formInsertExaminee").ajaxSubmit(function (returnJson) {
         //关闭加载层
         layer.close(layIndex);
         //录入成功
         if (returnJson.State) {
          //关闭模态框
       $("#modInsertExaminee").modal("hide");
          //提示信息
       layer.msg(returnJson.Text, { icon: 1, title: "来自狄仁杰的关爱" });
           //刷新表格
       tabEmployee.reload();
          } else {
           layer.alert(returnJson.Text, {
					 icon: 0, title: "来自狄仁杰的关爱" });
                }
            });
        } else {
          layer.alert("请填写完整数据信息!", { 
			icon: 0, title: "来之妲己攻略" });
        }

在写保存控制器方法时需要用到一个状态类,创建一个实体类记录执行状态:

public class ReturnJsonVo{
     public bool State { get; set; }// 状态
     public string Code { get; set; }// 状态码
     public string Text { get; set; }// 文本
     public object Object { get; set; } // 附加数据
}

保存新增员工写法有点复杂,关联到用户表,要与用户表一起新增保存,但没有两张表同时保存的,先一张一张保存:

    public ActionResult InsertEmployee(PW_Employee pwEmployee, PW_User pwUser) {
        //记录执行状态
        ReturnJsonVo returnJson = new ReturnJsonVo();
        //捕获异常
        try{
            //查询数据库中是否存在该员工信息
            //拿页面传过来的员工表与数据库的员工表对比
   int cuontEmployee = (from tbEmployee in MyModels.PW_Employee
     //数据库中的员工编号等于页面传过来的员工编号
     where tbEmployee.EmployeeNumber == pwEmployee.EmployeeNumber
     //计算查询重复员工信息条数
     select tbEmployee).Count();

     //如果cuontEmployee查询出来的值等于零,员工信息没有重复
       if (cuontEmployee == 0) {
          //查询用户表,判断是否存在该用户id
          int countUser = (from tbUser in MyModels.PW_User
                           where tbUser.UserID == pwUser.UserID
                           select tbUser).Count();
		 //如果countUser等于零,则没有相同的用户数据
          if (countUser == 0) {
              //开始新增,新增顺序:先新增用户表-->再到员工表
              //用户编号即是用户账号&密码
              pwUser.UserNuber = pwEmployee.EmployeeNumber;
              // 用户密码等于员工编号,加密保存到数据库
   pwUser.Password = Common.AESEncryptHelper.Encrypt(pwEmployee.EmployeeNumber);

             //新增的用户账号&密码放到用户表
             MyModels.PW_User.Add(pwUser);

             //保存,判断MyModels的数据是否大于零
             if (MyModels.SaveChanges() > 0) {
                 //获取到新增的用户id要等于用户表里的用户id
                        var userId = pwUser.UserID;
                        //新增员工表
                        pwUser.UserID = userId;
                        //新增的员工信息存放到员工表
                        MyModels.PW_Employee.Add(pwEmployee);
                        if (MyModels.SaveChanges() > 0) {
                            returnJson.State = true;
                            returnJson.Text = "员工信息录入成功,获得员工一名!";
                        }else{
                            returnJson.State = false;
                            returnJson.Text = "员工信息保存失败!";
                        }
                    }else{
                        returnJson.State = false;
                        returnJson.Text = "用户表保存失败!";
                    }
                }else{
                    returnJson.State = false;
                    returnJson.Text = "该员工id已被占用!";
                }
            } else{
                returnJson.State = false;
                returnJson.Text = "该员工编号已被占用!";
            }
        }catch (Exception) {
            returnJson.State = false;//返回状态
            returnJson.Text = "数据异常";//返回文本
        }
        return Json(returnJson, JsonRequestBehavior.AllowGet);
    }

控制器与页面的方法都写完了,先要测试判断是否都正确,可以测试编号、姓名、地址随便空一个,看看会不回有提示说数据不完整,要是有提示,则证明判断是正确的,备注可以为空就不要拿来测试判断是否成功了:

 public ActionResult InsertEmployee(PW_Employee pwEmployee, PW_User pwUser) {
        //记录执行状态
        ReturnJsonVo returnJson = new ReturnJsonVo();
        //捕获异常
        try{
            //查询数据库中是否存在该员工信息
            //拿页面传过来的员工表与数据库的员工表对比
   int cuontEmployee = (from tbEmployee in MyModels.PW_Employee
     //数据库中的员工编号等于页面传过来的员工编号
     where tbEmployee.EmployeeNumber == pwEmployee.EmployeeNumber
     //计算查询重复员工信息条数
     select tbEmployee).Count();

     //如果cuontEmployee查询出来的值等于零,员工信息没有重复
       if (cuontEmployee == 0) {
          //查询用户表,判断是否存在该用户id
          int countUser = (from tbUser in MyModels.PW_User
                           where tbUser.UserID == pwUser.UserID
                           select tbUser).Count();
		 //如果countUser等于零,则没有相同的用户数据
          if (countUser == 0) {
              //开始新增,新增顺序:先新增用户表-->再到员工表
              //用户编号即是用户账号&密码
              pwUser.UserNuber = pwEmployee.EmployeeNumber;
              // 用户密码等于员工编号,加密保存到数据库
   pwUser.Password = Common.AESEncryptHelper.Encrypt(pwEmployee.EmployeeNumber);

             //新增的用户账号&密码放到用户表
             MyModels.PW_User.Add(pwUser);

             //保存,判断MyModels的数据是否大于零
             if (MyModels.SaveChanges() > 0) {
                 //获取到新增的用户id要等于用户表里的用户id
                        var userId = pwUser.UserID;
                        //新增员工表
                        pwUser.UserID = userId;
                        //新增的员工信息存放到员工表
                        MyModels.PW_Employee.Add(pwEmployee);
                        if (MyModels.SaveChanges() > 0) {
                            returnJson.State = true;
                            returnJson.Text = "员工信息录入成功,获得员工一名!";
                        }else{
                            returnJson.State = false;
                            returnJson.Text = "员工信息保存失败!";
                        }
                    }else{
                        returnJson.State = false;
                        returnJson.Text = "用户表保存失败!";
                    }
                }else{
                    returnJson.State = false;
                    returnJson.Text = "该员工id已被占用!";
                }
            } else{
                returnJson.State = false;
                returnJson.Text = "该员工编号已被占用!";
            }
        }catch (Exception) {
            returnJson.State = false;//返回状态
            returnJson.Text = "数据异常";//返回文本
        }
        return Json(returnJson, JsonRequestBehavior.AllowGet);
    }

控制器与页面的方法都写完了,先要测试判断是否都正确,可以测试编号、姓名、地址随便空一个,看看会不回有提示说数据不完整,要是有提示,则证明判断是正确的,备注可以为空就不要拿来测试判断是否成功了:
在这里插入图片描述
保存成功后,再到数据库中看看是否把刚刚新增那条数据是否真正保存到数据库:
在这里插入图片描述
我们再控制器那写了倒叙排序,在页面上新增的数据是在第一条数据位置上显示,数据库是根据id有小到打的排序,刚刚新增的数据id是最大的,所以可以直接看数据库中最后那条数据是否刚刚新增那条,我数据库上已经有那条数据了,证明新增成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值