web-dev-qa-db-fra.com

Appel de @ Html.Partial pour afficher une vue partielle appartenant à un autre contrôleur

Je développe une application ASP.NET MVC 3, dont les pages de contenu ont un motif commun d'éléments de présentation. Cependant, étant donné que la page de connexion ne suit pas cette présentation, je ne peux pas la placer dans \Views\Shared\_Layout.cshtml.

J'aimerais donc ajouter une autre disposition partagée, par exemple, \Views\Shared\_Content.cshtml, et l'appeler à partir des vues de contenu ... mais malheureusement, ces vues appartiennent à des contrôleurs différents.

Est-il possible d'invoquer @Html.Partial pour une vue appartenant à un autre contrôleur?

85
pyon

Ce n'est pas un problème.

@Html.Partial("../Controller/View", model)

ou

@Html.Partial("~/Views/Controller/View.cshtml", model)

Devrait faire l'affaire.

Si vous voulez passer par l’autre contrôleur, vous pouvez utiliser:

@Html.Action("action", "controller", parameters)

ou l'une des autres surcharges

155
GvS

Comme GvS l’a dit, je trouve également utile d’utiliser vues fortement typées pour pouvoir écrire quelque chose comme:

@Html.Partial(MVC.Student.Index(), model)

sans cordes magiques.

7
Craig