c# - Request.Form returning no values -


i working on online registration form in html. of fields dynamically added using foreach data-binding in knockout.js based on collection of values. have jquery part complete add of text fields , collections.

the dynamic part of form looks this:

    <div class="form_section" id="familymembers" style="display:none;" >         <div class="wfamilymember" data-bind="foreach: $root.familymembers" >             <h2>family member <span data-bind="text: ($index() + 1)"></span> information</h2>             <div class='form_section'>                 <div class="eccform_column">                     <div class="eccform_label">first name*</div>                     <div class="eccform_field"><input class="fmfirstname" title="first name" type="text" data-bind="value:firstname" /></div>                 </div>                 <div class="eccform_column">                     <div class="eccform_label">last name *</div>                     <div class="eccform_field"><input class="fmlastname" title="last name" data-bind="value:lastname"/></div>                 </div>             </div>             <div class="form_section">                 <div class="eccform_column">                     <div class="eccform_label">family role*:</div>                     <div class="eccform_dropdowns"><select class='fmfamilyrole' data-bind="options: $root.familyroles, optionstext:'rolename', optionsvalue:'value', value:familyrole"></select> </div>                 </div>                 <div class="eccform_column">                     <div class="eccform_label">age group*:</div>                     <div class="eccform_dropdowns"><select class='fmagegroup' data-bind="options:$root.agegroups, optionstext:'groupname', optionsvalue:'value', value:agegroup"></select></div>                 </div>                 <div class="eccform_checkbox_items">                     <div class="eccform_checkbox"><input type="checkbox" class="fmlunchticket" data-bind="checked: lunchticket">lunch ticket ($5 children, $10 adults)</div>                     <div class="eccform_checkbox"><input type="checkbox" class="fmseminarticket" data-bind="checked: seminarticket" >seminar ticket ($40)</div>                 </div>             </div>             <div class="form_section">                 <div class="eccform_column_button">                     <button data-bind="click: $root.removefamilymember">remove</button>                 </div>             </div>         </div>         <button data-bind="click: $root.addfamilymember">add family member</button>     </div>      <div class="form_section" id="exhibitors" style="display:none;">         <div class='wexhibitor' data-bind="foreach: $root.exhibitors">             <h2>exhibitor <span data-bind="text: $index() + 1"></span> information</h2>             <div class="eccform_section">                 <div class="eccform_column">                     <div class="eccform_label">first name*</div>                     <div class="eccform_field"><input class="exfirstname" title="first name" data-bind="value:firstname" /></div>                 </div>                 <div class="eccform_column">                     <div class="eccform_label">last name*:</div>                     <div class="eccform_field"><input class="exlastname" title="last name" data-bind="value:lastname" /></div>                 </div>             </div>             <div class="eccform_section">                 <div class="eccform_column_exhibitor">                     <div class="eccform_checkbox"><input type="checkbox" class="exlunchticket" data-bind="checked: lunchticket">lunch ticket ($10)</div>                 </div>                 <div class="eccform_column_exhibitor">                     <div class="eccform_checkbox"><input type="checkbox" class="exseminarticket" data-bind="checked: seminarticket">seminar ticket ($40)</div>                 </div>                 <div class="eccform_column_removebutton">                     <button data-bind="click: $root.removeexhibitor">remove exhibitor</button>                 </div>             </div>         </div>         <button data-bind="click:$root.addexhibitor">add exhibitor</button>     </div> 

the problem in when try retrieve values in c#, don't seem able read these dynamically added values. use code read in values:

                list<string> ofirstnames = convertfromenumerable(request.form.allkeys.where(x => x.startswith("exfirstname")));                 list<string> olastnames = convertfromenumerable(request.form.allkeys.where(x => x.startswith("exlastname")));                 list<string> olunchtickets = convertfromenumerable(request.form.allkeys.where(x => x.startswith("exlunchticket")));                 list<string> oseminartickets = convertfromenumerable(request.form.allkeys.where(x => x.startswith("exseminarticket"))); 

this worked when using javascript add new elements dynamically before, doesn't work now. returns null or empty string set. feel i'm approaching totally wrong angle, don't know right angle is. should finding way data viewmodel instead? insights?

alright, solution simple attaching appropriate name onto html dom element. final html ended looking this:

    <div class="form_section" id="exhibitors" style="display:none;">         <div class='wexhibitor' data-bind="foreach: $root.exhibitors">             <h2>exhibitor <span data-bind="text: $index() + 1"></span> information</h2>             <div class="eccform_section">                 <div class="eccform_column">                     <div class="eccform_label">first name*</div>                     <div class="eccform_field"><input id="exfirstname" runat="server" class="exfirstname" title="first name" data-bind="value:firstname,attr:{name: 'exfirstname_'+$index()}" /></div>                 </div>                 <div class="eccform_column">                     <div class="eccform_label">last name*:</div>                     <div class="eccform_field"><input id="exlastname" runat="server" class="exlastname" title="last name" data-bind="value:lastname, attr:{name: 'exlastname_'+$index()}" /></div>                 </div>             </div>             <div class="eccform_section">                 <div class="eccform_column_exhibitor">                     <div class="eccform_checkbox"><input id="exlunchticket" name="exlunchticket" runat="server" type="checkbox" class="exlunchticket" data-bind="checked: lunchticket, attr: { name: 'exlunchticket_' + $index() }">lunch ticket ($10)</div>                 </div>                 <div class="eccform_column_exhibitor">                     <div class="eccform_checkbox"><input id="exseminarticket" name="exlunchticket" runat="server" type="checkbox" class="exseminarticket" data-bind="checked: seminarticket, attr: { name: 'exseminarticket_' + $index() }">seminar ticket ($40)</div>                 </div>                 <div class="eccform_column_removebutton">                     <button data-bind="click: $root.removeexhibitor">remove exhibitor</button>                 </div>             </div>         </div>         <button data-bind="click:$root.addexhibitor">add exhibitor</button>     </div> 

notice section: attr: { name: 'exseminarticket_' + $index() }.

then, in c# corrected code this:

int somekeys = request.form.allkeys.where(x=>x.startswith("exfirstname")).count();  (int = 0; < somekeys; i++) {     string firstname = request.form["exfirstname_" + i];     string lastname = request.form["exlastname_" + i];     bool lunchticket = convert.toboolean(request.form["exlunchticket_" + i]);     bool seminarticket = convert.toboolean(request.form["exseminarticket_" + i]);      if (firstname != "" && lastname != "")         lfamilymembers.add(new familymember(firstname, lastname, seminarticket, lunchticket, agegroup.twenties, familyrole.exhibitor)); } 

Comments

Popular posts from this blog

php - get table cell data from and place a copy in another table -

javascript - Mootools wait with Fx.Morph start -

php - Navigate throught databse rows -