假设我们有层级结构的表单提交
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);
}