preserve动态生成的复选框的回发值

编程入门 行业动态 更新时间:2024-10-25 18:22:50
本文介绍了preserve动态生成的复选框的回发值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

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

公共类MemberModel{    [显示(名称=公司名称)]        公共字符串MemberName {搞定;组; }    [显示(NAME =专业)]        公共字符串专业{搞定;组; }    公共BOOL IsLeader {搞定;组; }}公共类TeamModel{    [显示(NAME =队名)]        公共字符串TeamName {搞定;组; }    [显示(名称=项目名称)]        公共字符串项目名{获得;组; }    [显示(名称=项目详情)]        公共字符串ProjectDetails {搞定;组; }    公开名单< MemberModel> MemberModel {搞定;组; }}

一个团队可以包含任意数量内的成员,所以我采取了TeamModel MemberModel列表。 Intially而渲染模型我已经实例化MemberModel 5空白元。所以,在我看来,将有形式为5成员增加更多的成员链接。

现在,当用户在添加更多成员的链接,我会检查是否所有5行已经充满点击?如果是的话比我将使用jQuery添加一个新行。这两个功能得以实现如下。

$(#AddMoreMember)。点击(函数(){        VAR rowCount时= $(#tblOptions TR:GT(0))的长度。        VAR MemberName =MemberModel [+ rowCount等+] .MemberName        VAR MEMBERID =会员+ rowCount等;        VAR专业=MemberModel [+ rowCount等+] .Speciality        VAR SpecialityId =专业+ rowCount等;        VAR IsLeader =MemberModel [+ rowCount等+] .IsLeader        VAR LeaderId =领袖+ rowCount等;        VAR标志= FALSE;        对于(VAR I = 0; I< rowCount时,我++){            VAR UserDetail =MemberModel_+ I +__MemberName            VAR值= $(#+ UserDetail).VAL();            如果(价值== NULL ||值==){                标志=真实的;            }        }        如果(标志== FALSE){            VAR名称标签='<输入类型=文本VALUE =的风格=宽度:200像素MAXLENGTH =1000NAME =+ MemberName +'ID =+ MEMBERID +'数据val-正则表达式纹=^ [^&放大器; LT;&放大器; GT;〜%^; / |] +数据-VAL-的regex ​​=^&放大器;放大器; LT;&放大器;放大器; GT;〜%; / | ';字符不选择数据-VAL =真正的类=输入验证错误&GT允许的;            VAR SpecialityTag ='<输入类型=文本VALUE =的风格=宽度:200像素MAXLENGTH =1000NAME =+专业+'ID =+ SpecialityId +'数据val-正则表达式纹=^ [^&放大器; LT;&放大器; GT;〜%^; / |] +数据-VAL-的regex ​​=^&放大器;放大器; LT;&放大器;放大器; GT;〜%; / | ';字符不选择数据-VAL =真正的类=输入验证错误&GT允许的;            VAR LeaderTag ='<输入类型=复选框VALUE =假的onclick =CheckDefault(本); NAME =+ IsLeader +'ID =+ LeaderId +'>';            VAR HTML ='< TR>< TD align =left的风格=宽度:30%>' +名称标签+'< / TD>< TD align =left的风格=宽度:30%>' + SpecialityTag +'< / TD>< TD align =left的风格=宽度:30%>' + LeaderTag +'< / TD>< / TR>';            $(#tblOptions TR:最后一个)后(HTML);        }    });    功能CheckDefault(OBJ)    {        VAR ID = $(OBJ).attr(ID);        $(输入:复选框[ID * = MemberModel])各(。            功能(){                VAR radioID = $(本).attr(ID);                如果(radioID!= ID)                {                    $(#+ radioID).prop(选中,FALSE);                }            }        );    }

现在,当我添加更多的行,并选择IsLeader复选框,它不是preserving它的价值,同时它得到回POST方法。

我应该怎么做才能属于动态生成的复选框的价值?

解决方案   

我应该怎么做才能属于动态生成的复选框的价值?

阅读的 下面的文章 ,并使用非顺序索引动态生成的输入字段的名称。在这篇文章中桑德森史蒂芬说明了一个非常有用的帮手 Html.BeginCollectionItem 这将让你实现这个目标。

In my Online Registration application, I've created two models as below. TeamModel is used to store information regarding the team and project while MemberModel will contain information regarding the members of the team.

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> MemberModel { get; set; } }

A team can contain any number of members within, so i've taken list of MemberModel in TeamModel. Intially while rendering the model i've instantiated MemberModel with 5 blank elements. So in my view there will be form for 5 members with "ADD MORE MEMBERS" link.

Now when user clicks in "ADD MORE MEMBERS" link i'll check whether all 5 rows has been filled ? if so than i will add one new row using jQuery. both functionality are achieved as following.

$("#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 = '<input type="text" value="" style="width:200px" maxlength="1000" name="' + MemberName + '" id = "' + MemberId + '" data-val-regex-pattern="^[^&lt;&gt;~%^;/|]+" data-val-regex="^&amp;lt;&amp;gt;~%;/| characters are not allowed in option" data-val="true" class="input-validation-error">'; var SpecialityTag = '<input type="text" value="" style="width:200px" maxlength="1000" name="' + Speciality + '" id = "' + SpecialityId + '" data-val-regex-pattern="^[^&lt;&gt;~%^;/|]+" data-val-regex="^&amp;lt;&amp;gt;~%;/| characters are not allowed in option" data-val="true" class="input-validation-error">'; var LeaderTag = '<input type="checkbox" value="false" onclick="CheckDefault(this);" name="' + IsLeader + '" id="' + LeaderId + '">'; var html = '<tr><td align="left" style="width: 30%">' + NameTag + '</td><td align="left" style="width: 30%">' + SpecialityTag + '</td><td align="left" style="width: 30%">' + LeaderTag + '</td></tr>'; $("#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); } } ); }

now when I add more rows and select IsLeader checkbox, it's not preserving it's value while it gets back to the post method.

What should I do to pertain dynamically generated checkboxes value ?

解决方案

What should I do to pertain dynamically generated checkboxes value ?

Read the following article and use non-sequential indexes for the names of your dynamically generated input fields. In this article Steven Sanderson illustrates a very useful helper Html.BeginCollectionItem which would allow you to achieve that.

更多推荐

preserve动态生成的复选框的回发值

本文发布于:2023-10-12 23:16:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1486161.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:复选框   动态   preserve   回发值

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!