Updating Parent / Child Entries Using Binders in ASP.Net MVC

I modified the Nerd Dinner app to allow editing of child records by adding the following code to DinnerForm.ascx

  <p>
    <%int i = 0;
   foreach (NerdDinner.Models.RSVP rsvp in this.Model.Dinner.RSVPs)
       { %>

        <%= Html.Hidden("Dinner.RSVPs[" + i + "].RsvpID", rsvp.RsvpID)%>
        <%= Html.Hidden("Dinner.RSVPs[" + i + "].DinnerID", rsvp.DinnerID)%>
        <%= Html.TextBox("Dinner.RSVPs[" + i + "].AttendeeName", rsvp.AttendeeName)%>
    <% i += 1;
   } %>
    </p>

he does this:

<p>
    <input id="Dinner_RSVPs[0]_RsvpID" name="Dinner.RSVPs[0].RsvpID" type="hidden" value="36" />
        <input id="Dinner_RSVPs[0]_DinnerID" name="Dinner.RSVPs[0].DinnerID" type="hidden" value="63" />
        <input id="Dinner_RSVPs[0]_AttendeeName" name="Dinner.RSVPs[0].AttendeeName" type="text" value="kp" />
    <input id="Dinner_RSVPs[1]_RsvpID" name="Dinner.RSVPs[1].RsvpID" type="hidden" value="37" />
        <input id="Dinner_RSVPs[1]_DinnerID" name="Dinner.RSVPs[1].DinnerID" type="hidden" value="63" />
        <input id="Dinner_RSVPs[1]_AttendeeName" name="Dinner.RSVPs[1].AttendeeName" type="text" value="jim" />

    </p>   

I did not change the editing action method of the DinnersControler Post. Parent dinner is updated as usual, but UpdateModel (dinner) appears; does not see / does not update child RSVP records.

I tried several options for rendering child records so that the bindings in the Model would see the collection, with no luck.

Updates parent / child records in one shot, calling UpdateModel (Parent); perhaps with current model bindings?

+5
source share
3

.

, , .. Dinner.RSV . , , , (.. Dinner.RSVP.Where(r = > r.RSVP_ID == input_id), ). , - .

, , rsvp int :

, :

UpdateModel("Dinner", Dinner);

, :

int i = 0;

foreach (var r in Dinner.RSVPs) {
  UpdateModel(r, "Dinner.RSVPs[" + i++ + "]");
}

, . , ( , , RSVP ).

EDIT. , OP, . RSVP.ID, . , Dinner.RSVP POST GET ( ), RSVP.ID . RSVP , , . int .

, ,

+4

, . nerddinner, . , , , . 100% - ndinner, , / , ?

0

, / , UpdateModel (Parent); ?

, . , Linq-to-Sql, ( - ), EntitySet<T> - IList<T>. , (?) MVC - ASP.NET 4.0. , MVC , , , EntitySet.

. , , () . , "" DDD/OOP, , MVC LTS .

Note, I admit that James S solution is probably more “clean”, but in order to make it “one-shot”, as you ask, you need to either wait for ASP.NET 4.0 or use a workaround similar to what you will find in my other post.

Good luck

0
source

All Articles