在回发时保留动态生成的复选框的值
在我的在线注册应用程序中,我创建了两个模型,如下所示。 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
,它可以帮助您实现这一目标。