MVC框架之多表循环新增

MVC框架之多表循环新增

多表新增也就是一次新增多张表或新增多张表的多张数据,下面是我在MVC中做的一个多表新增的实例,MVC是主要分为三层架构的,M为Models数据层,连接实体数据模型;V为视图层,用于显示数据;C层为控制层,用于处理数据返回页面。多表新增是通过先新增主表,然后返回主表ID,接着获取刚新增的主表ID继续赋给明细表新增,下面是我做一个通过HTML中的JavaScript循环新增实例,跟实际项目毫无关系,仅供参考:
1、 首先我们先HTML中创建好页面:定义好控件,代码如下图:
在这里插入图片描述
其中我有引用布局插件,因为懒得写样式了,表格用来输入多条明细,循环提交;
2、紧接着就是写后台代码了,后台需要写两个新增方法,新增主表和明细表,代码如下,

  public  ActionResult SaveProject(string ProjectName)
        {
            string strmsg = "";
            int returnProjectid = 0;
            try
            {
                if (ProjectName.Trim() != "")
                {
                    Models.tbProject mytbProject = new tbProject();
                    mytbProject.ProjectName = ProjectName.Trim();
                    myModels.tbProject.Add(mytbProject);
                    if (myModels.SaveChanges() > 0)
                    {
                        returnProjectid = mytbProject.ProjectID;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return Json(returnProjectid, JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        ///新增项目明细
        /// </summary>
        /// <param name="ProjectID"></param>
        /// <param name="ProjectDetailName"></param>
        /// <returns></returns>
        public ActionResult InsertProjectDetail(int ProjectID,string ProjectDetailName)
        {
            string strmsg = "新增失败";
            try
            {
                if (ProjectID > 0 && ProjectDetailName != "")
                {
                    Models.tbProjectDetail mytbProjectDetail = new tbProjectDetail();
                    mytbProjectDetail.ProjectID = ProjectID;
                    mytbProjectDetail.ProjectDetail = ProjectDetailName;
                    myModels.tbProjectDetail.Add(mytbProjectDetail);
                    if (myModels.SaveChanges() > 0)
                    {
                        strmsg = "新增成功";
                    }
                    else
                    {
                        strmsg = "新增失败";
                    }
                }
            }
            catch (Exception)
            {   
                throw;
            }
            return Json(strmsg, JsonRequestBehavior.AllowGet);
        }

3、最后我们就要回我们的页面补上JavaScript的提交数据代码了,代码如图所示:

其中主要保存代码解释如下:

  //保存
        function SaveProject() {
            //获取主表的值
            var ProjectName = $("#ProjectName").val();
            //获取明细表TR
            var TR = $("#tbProjectDetail tr");
            if (ProjectName.toString().trim() != "") {
            //主表的值不为空就新增,通过post提交到后台方法
                $.post("SaveProject", { "ProjectName": ProjectName }, function (intProjectid) {
                    if (intProjectid > 0) {//因为后台返回的是新增的ID,如果有返回就继续新增明细信息
                        if (TR.length > 0) {//判断明细表有无数据(tr)
                            for (var i = 1; i < TR.length; i++) {//循环遍历表格新增明细
                                var td = $(TR[i]).children();//获取循环遍历的td
//获取表格中td内容
                                var strProjectDetailName = td.eq(1).children().val();                                if (strProjectDetailName != "") {//表格内容不为空就新增
                                //获取刚刚返回的主表ID和输入的明细信息进行提交保存
                                    $.post("InsertProjectDetail", { ProjectID: intProjectid, ProjectDetailName: strProjectDetailName }, function (msg) {
                                        if (msg != "") {
                                            strmsg = msg;//获取控制器返回的字符串,给到全局变量
                                        }
                                    });
                                }
                            }
                            if (strmsg != "") {//结束时如果不为空就输出返回的结果
                                alert(strmsg);
                            }
                        }
                    }
                });
            }
        }

这就是MVC中通过JavaScript新增多条数据的方法了,当然有更好的方法可以直接在后台新增方法里循环新增;其实思路都一样,如果两张表有联系,那么就需要新增完主表返回主表ID给明细表继续新增。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值