asp.net mvc - Binding collections in MVC -


i have view model consists of applicant object , teammember collection. when post model team collection null. i've tried changing collection original ienumarable list didn't make difference. changed controllers edit action accept formcollection, , verified there data in viewmodel["member.firstname"]. i'm lost why binding isn't working. tried clean out code samples as possible i'm confused @ i'm missing. appreciated!

view model properties

public class myviewmodel {     public applicant applicantinfo { get; set; }     public list<teammember> teammembers { get; set; } } 

controller

[httppost] public actionresult edit(myviewmodel viewmodel) {          //  viewmodel.applicantinfo has form data          //  viewmodel.teammembers = null               } 

view

<% using (html.beginform())        {%>     <h3>     <a href="#">applicant information</a>     </h3>     <label>         city         <%: html.textboxfor(m => model.applicantinfo.city)%>     </label>     <label>         state         <%: html.textboxfor(m => model.applicantinfo.state)%>     </label>      <h3>     <a href="#">team</a>     </h3>     <div>     <% foreach (var member in model.teammembers)     { %>                <div class="editor-field">         <%: html.dropdownlist("member.type", model.getmembertypes(member.membertype.typeid))%>     </div>     <div class="editor-field">         <%: html.editorfor(m => member.firstname)%>     </div>     <div class="editor-field">         <%: html.editorfor(m => member.lastname)%>     </div>     <div class="editor-field">         <%: html.editorfor(m => member.title)%>     </div>                 <%} %>     </div>     <p>         <input type="submit" value="save" />     </p>     <% } %> 

i believe input tags associated items in collection (when model not collection) need have index in name attribute before can bind posted data view model. here way accomplish this...

<% (int i=0; i<model.teammembers.count; i++) { %> <div class="editor-field">   <%: html.editorfor(m => m.teammembers[i].firstname)%> </div> <div class="editor-field">   <%: html.editorfor(m => m.teammembers[i].lastname)%> </div> <% } %> 

i've used template suggested shea, have tad more code trying force render brackets/indexes.

<% foreach (var member in model.teammembers) { %>   <%: html.editorfor(x =>      member,      "teammember",      "teammembers["+(member.number-1)+"]",      new { membertypes = model.getmembertypes(member.membertype.typeid) })%> <% } %> 

here old still relevant article phil haack on topic.


Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -