在回发时保留动态生成的复选框的值

在我的在线注册应用程序中,我创建了两个模型,如下所示。 TeamModel用于存储有关团队和项目的信息,而MemberModel将包含有关团队成员的信息。

public class MemberModel { [Display(Name = "Member Name")] public string MemberName { get; set; } [Display(Name = "Speciality")] public string Speciality { get; set; } public bool IsLeader { get; set; } } public class TeamModel { [Display(Name = "Team Name")] public string TeamName { get; set; } [Display(Name = "Project Name")] public string ProjectName { get; set; } [Display(Name = "Project Details")] public string ProjectDetails { get; set; } public List MemberModel { get; set; } } 

一个团队可以包含任意数量的成员,所以我已经在TeamModel中列出了MemberModel。 在渲染模型的过程中,我实际使用5个空白元素实例化了MemberModel。 因此,在我看来,将有5个成员的表格“添加更多成员”链接。

现在当用户点击“添加更多成员”链接时,我将检查是否所有5行都已填满? 如果是这样,我将使用jQuery添加一个新行。 两种function都实现如下。

 $("#AddMoreMember").click(function () { var rowCount = $("#tblOptions tr:gt(0)").length; var MemberName = "MemberModel[" + rowCount + "].MemberName"; var MemberId = "Member" + rowCount; var Speciality = "MemberModel[" + rowCount + "].Speciality"; var SpecialityId = "Speciality" + rowCount; var IsLeader = "MemberModel[" + rowCount + "].IsLeader"; var LeaderId = "Leader" + rowCount; var flag = false; for (var i = 0; i < rowCount; i++) { var UserDetail = "MemberModel_" + i + "__MemberName"; var value = $("#" + UserDetail).val(); if (value == null || value == "") { flag = true; } } if (flag == false) { var NameTag = ''; var SpecialityTag = ''; var LeaderTag = ''; var html = '' + NameTag + '' + SpecialityTag + '' + LeaderTag + ''; $("#tblOptions tr:last").after(html); } }); function CheckDefault(obj) { var id = $(obj).attr("id"); $("input:checkbox[id*=MemberModel]").each( function(){ var radioID = $(this).attr("id"); if (radioID != id) { $("#" + radioID).prop("checked",false); } } ); } 

现在,当我添加更多行并选择IsLeader复选框时,它在返回post方法时不会保留它的值。

我该怎么做才能动态生成复选框值?

我该怎么做才能动态生成复选框值?

阅读following article并使用非顺序索引作为动态生成的输入字段的名称。 在本文中,Steven Sanderson演示了一个非常有用的帮助程序Html.BeginCollectionItem ,它可以帮助您实现这一目标。