2009-12-27 3 views
3

Je construis une application APS.net MVC 2, où j'ai une table parent et une table enfant. J'ai le contrôleur, la vue et le modèle construits pour la table parente, donc je peux ajouter, éditer, voir les détails et enlever les enregistrements de la table parente.Routage MVC pour les relations parent-enfant

I, en utilisant le routage suivant pour ce faire:

routes.MapRoute(
       "Default",            // Route name 
       "{controller}/{action}/{id}",       // URL with parameters 
       new { controller = "Parent", action = "List", id = "" } // Parameter defaults 

Cette configuration me permet d'utiliser les urls suivantes dans mon application:

Pour la liste de tous les enregistrements parents: /parent/Liste
Pour afficher les détails de un enregistrement parent spécifique: /Parent/Détails/< ID>
Pour modifier un enregistrement parent : /parent/Modifier/ID <>

etc

Maintenant, j'ai une table enfant pour chaque enregistrement parent. Quel est le routage standard pour cela?

Pour afficher la liste des enregistrements enfants d'applications pour un parent spécifique: Parent/< ID>/enfant/Liste
Pour voir détails d'un enregistrement enfant spécifique: enfant/Détails/< ID>
Pour modifier un enregistrement spécifique enfant: enfant/Modifier/< ID>

Est-ce correct? Et comment pourrais-je configurer la MapRoute?

Répondre

4

Pour les articles 2 et 3 de votre liste, votre itinéraire actuel sera correct, c'est-à-dire si vous avez un contrôleur enfant.

To list app child records for a specific parent: Parent/< ID>/Child/List 
To view details for a specific child record: Child/Details/< ID> 
To edit a specific child record: Child/Edit/< ID> 

Pour le 1er point de créer simplement une nouvelle route

routes.MapRoute(
"ParentWithChild", 
"{parent}/{id}/Child/List", 
new { controller = "Child", action = "ChildList", id = "", parent=""} 

Je suppose que vous voulez utiliser l'enfant du contrôleur et va créer une nouvelle méthode d'action appelée ChildList

La signature serait comme ceci

public ActionResult ChildList(string parent, string id) 

Point rapide si "Parent" est le mot parent plutôt que un nom alors la route sera

"Parent/{id}/Child/List", 

et signature serait

public ActionResult ChildList(string id)