2009-12-22 7 views
1

Je suis nouveau à travailler avec MVC alors s'il vous plaît ne présumez pas que je sais quoi que ce soit.Comment afficher une autre vue enfant dans MVC?

Je prends un projet qui a déjà beaucoup écrit en MVC et j'essaie d'y ajouter quelques choses.

Sur un point de vue il y a une ligne

<% Html.RenderAction("List", "Image", new { id = Model.JobId, all = true }); %> 

Je vois List.ascx sous le répertoire d'image. Je vois la méthode List sur le contrôleur de vue.

Je voudrais rendre les résultats de cette méthode de liste à un autre fichier ascx. (AssignImage.ascx) Je me rends compte que je pourrais ajouter une autre méthode sur le contrôleur, mais il semble que je devrais avoir un moyen d'utiliser la même méthode mais une vue différente.

Répondre

1

Si vous ne me dérange pas réutiliser (ou duplicateur) un code que je serais probablement juste faire une nouvelle action pour faire face à cela.

Je ne pense pas que je changerais l'action pour passer un autre paramètre (l'action prend déjà 2: un jobId et un booléen). Vous devrez probablement modifier le code existant pour tenir compte d'un troisième paramètre. En supposant que l'action ne fait que vous donner une liste d'enregistrements, je ne vois pas comment ajouter une nouvelle action avec une ligne de LINQ (ou peu importe comment vous obtenez des données) offenserait le DRY ... surtout si elle fait la code plus facile à maintenir en ne mélangeant pas trop de fonctions en une seule action. Si c'est trop offensant, vous pouvez refactoriser les actions pour appeler une méthode commune. La méthode Action détermine-t-elle la vue?

2

Dans votre méthode d'action

if (isList) return PartialView("List"); else return PartialView("AssignImage");

+0

? il semble que je devrais être en mesure de demander simplement les données en quelque sorte à partir du contrôleur et laisser la vue déterminer la mise en page ... peut-être que je pense à reculons/façon asp.net traditionnelle. –

+1

Oui, l'action détermine la vue. La vue, selon le modèle MVC, devrait être très stupide et ne pas faire des déterminations comme ça. –

Questions connexes