2009-03-31 20 views
0

Je ne fais que jouer avec MVC pour la première fois et j'ai un problème.Dans ASP.Net MVC 1.0 Comment insérer des données enfants de modèle?

Disons que j'ai 2 tables - Personne et emplacement. L'emplacement a une relation de clé étrangère avec la personne - donc une personne peut avoir plusieurs emplacements qui lui appartiennent. À mon avis, j'ai des entrées de formulaire pour les champs Person - cela fonctionne très bien.

Toutefois, je souhaite également avoir une grille pour contenir les emplacements (avec les boutons Ajouter/Supprimer standard), ainsi que les entrées de formulaire maître-détail liées à l'enregistrement en cours dans la grille Emplacements.

Mon problème est de savoir comment implémenter la grille de relation enfant et les entrées de formulaire dans la vue?

Répondre

1

Vous pouvez avoir un autre formulaire pour les emplacements avec son propre bouton Ajouter/Enregistrer/Envoyer. Ainsi, lorsque la soumission se produit à partir du formulaire Personne, elle met à jour l'enregistrement Personne, mais si la soumission provient du formulaire Emplacement, elle effectue l'action appropriée.

Comme ceci:

// person data 
<table> 
    <tr><td>Name:</td><td><%=Model.PersonName%></td></tr> 
    <tr><td>Title:</td><td><%=Model.PersonTitle%></td></tr> 
    <tr><td>Other Info:</td><td><%=Model.PersonOtherInfo%></td></tr> 
</table> 
// person's locations grid 
<table> 
    <tr><th></th><th></th></tr> 
    <% foreach (Location loc in Model.PersonLocations) { %> 
    <tr><td>Delete</td><td><%=loc.LocationName%></td></tr> 
    <% } %> 
</table> 
// new location form 
<% using (Html.BeginForm<MyController>(p => p.New())) { %> 
<table> 
    <tr> 
     <td>Location Name</td> 
     <td><%=Html.TextBox("LocationName")%></td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <%=Html.SubmitButton("Save", "Save")%>&nbsp; 
      <%=Html.Button("Cancel", "Cancel", HtmlButtonType.Button,"javascript:cancelEdit();") %> 
     </td> 
    </tr> 
</table> 
<%=Html.AntiForgeryToken() %> 
<%}%>