复杂结构的表单提交

假设我们有层级结构的表单提交

      var form3 = $('#ProjectForm');
                var formdata = new FormData(form3);
                var error3 = $('.alert-danger', form3);
                var success3 = $('.alert-success', form3);
                form3.validate({
                    errorElement: 'span',
                    errorClass: 'help-block',
                    focusInvalid: false,
                    ignore: "",
                    rules: {
                        ProjectName: {
                            required: true,
                        },
                        SourceOfFunding: {
                            required: true,
                        },
                        ProSubject: {
                            required: true,
                        }
                    },
                    messages: {
                        ProjectName: {
                            required: "请输入项目名称"
                        },
                        SourceOfFunding: {
                            required: "请选择经费来源"
                        },
                        ProSubject: {
                            required: "请选择学科"
                        }
                    },
                    errorPlacement: function (error, element) {
                        if (element.parent(".input-group").size() > 0) {
                            error.insertAfter(element.parent(".input-group"));
                        } else if (element.attr("data-error-container")) {
                            error.appendTo(element.attr("data-error-container"));
                        } else if (element.parents('.radio-list').size() > 0) {
                            error.appendTo(element.parents('.radio-list').attr("data-error-container"));
                        } else if (element.parents('.radio-inline').size() > 0) {
                            error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
                        } else if (element.parents('.checkbox-list').size() > 0) {
                            error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
                        } else if (element.parents('.checkbox-inline').size() > 0) {
                            error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
                        } else {
                            error.insertAfter(element);
                        }
                    },
                    invalidHandler: function (event, validator) {
                        success3.hide();
                        error3.show();
                        App.scrollTo(error3, -200);
                    },
                    highlight: function (element) {
                        $(element)
                            .closest('.form-group').addClass('has-error');
                    },
                    unhighlight: function (element) {
                        $(element)
                            .closest('.form-group').removeClass('has-error');
                    },
                    success: function (label) {
                        label.closest('.form-group').removeClass('has-error');
                    },
                    submitHandler: function (form) {
                        success3.show();
                        error3.hide();


                        //先清空 拿到分中心数据
                        $("#ProCenterList").val(null)
                        myArray = [];
                        var olistTable = document.getElementById('listTable');
                        var items = document.getElementsByName("item");
                        var procenter = {};
                        $.each(items, function (index, value, array) {
                            var oParentnode = items[index].parentNode.parentNode;
                            procenter = {
                                Project_Id: 1,
                                CenterCode: items[index].parentNode.parentNode.cells[5].innerHTML,
                                CenterName: items[index].parentNode.parentNode.cells[1].innerHTML,
                                IsHostOrg: $("#IsHostOrg").prop('checked'),
                                PrincipalCode: items[index].parentNode.parentNode.cells[6].innerHTML,
                                CasesNumber: items[index].parentNode.parentNode.cells[3].innerHTML,
                                SerialNumber: items[index].parentNode.parentNode.cells[4].innerHTML
                            }
                            myArray.push(procenter);
                        });
                        var pro = {
                            Disease_Id: $("#Disease_Id").val()
                            , ProjectCode:""
                            , ProjectName: $("#ProjectName").val()
                            , ProjectTypeId: $("#ProjectTypeId").val()
                            , SourceOfFunding: $("#SourceOfFunding").val()
                            , PrincipalCode: $("#PrincipalCode").val()
                            , FirContactsCode:$("#FirContactsId").select2("val")
                            , StartDate: $("#StartDate").val()
                            , EndDate: $("#EndDate").val()
                            , EthicalApprovalDate: $("#EthicalApprovalDate").val()
                            , EthicalApprovalCode: $("#EthicalApprovalCode").val()
                            , ClinicalTrialRegistrationDate: $("#ClinicalTrialRegistrationDate").val()
                            , ClinicalTrialRegistrationCode: $("#ClinicalTrialRegistrationCode").val()
                            , IsMultiCenter: $("input[name='IsMultiCenter']").val()
                            , SampleSize: $("#SampleSize").val()
                            , Description: $("#Description").val()
                            , ExperimentType: $("input[name='ExperimentType']").val()
                            , IsOneBlindness: false
                            , IsTwoBlindness: false
                            , IsCompete: $("input[name='IsCompete']").val()
                            , FirContactInfo: $("#FirContactInfo").val()
                            , SecContactsCode: $("#SecContactsId").val()
                            , SecContactInfo: $("#SecContactInfo").val()
                            , ProjectENName: $("#ProjectENName").val()
                            , ProjectAbbreviation: $("#ProjectAbbreviation").val()
                            , ProSubject: $("#ProSubject").val()
                            , ApplicationDoc: 0
                            , ProjectPlanDoc: 0
                            , InformedConsentDoc: 0
                            , StaAnalysisDoc: 0
                            , EthicalApprovalDoc: 0
                            , ProCenterList: myArray
                            , ProjectStatus: 0//创建中
                        };
                        debugger;

                        $.ajax({
                            url: "/Project/AddProjectByFormData",
                            type: "post",
                            dataType: "json",
                            data: JSON.stringify(pro),
                            contentType: "application/json",//十分重要,这里不写是传递不过去的
                            async: true,
                            beforeSend: function (XMLHttpRequest) {
                                $('body').addClass('loading');
                            },
                            success: function (data, textStatus, jqXHR) {
                                $("#ID").val(data);
                                PROJECT_ADD_FUN.Step_Next(2, 3);
                            },
                            complete: function (XMLHttpRequest, textStatus) {
                                $('body').removeClass('loading');
                                //关闭加载动画
                            }
                        });
                        return false;
                    }
                });

后台代码,此处的Project类中 属性ProCenterList是 public List<ProjectCenter> ProCenterList { get; set; }这样的。是项目的子类

[HttpPost]
        [LogsRequests(1, "添加科研项目")]
        public JsonResult AddProjectByFormData(Project pro)
        {
            pro.CreateUserId = CurrentUser == null ? 10000 : CurrentUser.ID;
            pro.CreateDateTime = DateTime.Now;
            pro.PrincipalId = sSOServices.AddSys_User(pro.PrincipalCode).ID;
            pro.FirContactsId = sSOServices.AddSys_User(pro.FirContactsCode).ID;
            pro.SecContactsId = sSOServices.AddSys_User(pro.SecContactsCode).ID;
            pro.Disease_Id = 9999;
            pro.ProjectCode = string.Empty;
            var newProject = projectBLL.AddProject(pro);

            //新增项目的同时,给它添加默认分组
            ProjectPatientGroup model = new ProjectPatientGroup();
            model.Project_Id = newProject.ID;
            model.GroupName = "默认分组";
            model.CreateDateTime = DateTime.Now;
            model.CreateUserId = CurrentUser.ID;
            model.IsDelete = false;
            projectPatientGroupBLL.AddProjectPatientGroup(model);

            //新增项目的同时,给他添加默认中心?
            ProjectCenter proCenter = new ProjectCenter();
            if (pro.ProCenterList!=null )
            {
                //添加中心
                foreach (var ProCenter in pro.ProCenterList)
                {
                    proCenter.Project_Id = newProject.ID;
                    proCenter.CenterName = ProCenter.CenterName;
                    proCenter.CenterCode = ProCenter.CenterCode;
                    proCenter.CasesNumber = ProCenter.CasesNumber;
                    proCenter.SerialNumber = ProCenter.SerialNumber;
                    proCenter.IsHostOrg = ProCenter.IsHostOrg;
                    proCenter.PrincipalId = sSOServices.AddSys_User(ProCenter.PrincipalCode).ID;
                    projectCenterBLL.AddProjectCenter(proCenter);
                }
            }
            //新增项目时,添加项目负责人角色信息
            Sys_UserRoles sys_UserRoles = new Sys_UserRoles()
            {
                User_Id = newProject.PrincipalId,
                Role_Id = 1,
                Project_Id = newProject.ID,
                IsDelete = false,
                CreateUserId = CurrentUser.ID,
                CreateDateTime = DateTime.Now,
                Center_Id = proCenter.ID
            };
            sys_RolesBLL.AddProjectUser(sys_UserRoles);

            WebHelper.WriteCookie(CLIENT_PROJECT_ID, newProject.ID.ToString(), false);
            //清理项目列表缓存
            ApplicationCache.RemoveCache(CurrentUser.ID + CACHE_MY_PROJECT);
            return Json(newProject.ID);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值