J'ai deux entités de base de données que je dois représenter et j'ai besoin de les produire sur une seule page.
J'ai quelque chose comme ça
Vues Def ViewA ViewB Test ViewC
Je veux ViewC pour afficher ViewA, qui affiche ViewB.
En ce moment, j'utilise quelque chose comme ça:
// View C
<!-- bla -->
<% Html.RenderPartial(Url.Content("../Definition/DefinitionDetails"), i); %>
// View A
<!-- bla -->
<% Html.RenderPartial(Url.Content("../Definition/DefinitionEditActions")); %>
Y a-t-il un meilleur moyen de le faire? Je trouve que la liaison avec des chemins d'accès relatifs peut vous brûler. Des conseils?
Toute chance que je puisse faire quelque chose comme ...
Html.RenderPartial ("Définition", "DefinitionDetails", i); ?
Merci pour l'aide
cela fonctionne pour moi!
@Html.Partial("~/Views/NewsFeeds/NewsFeedPartial.cshtml")
Vous pouvez vous référer aux vues avec des chemins complets, comme:
Html.RenderPartial("~/Views/Definition/DefinitionDetails")
Encore mieux, utilisez la bibliothèque T4MVC , qui fait ce qui précède et la rend (quasi-) fortement typée. Vous pouvez vous référer à n'importe quelle vue depuis n'importe quel contrôleur ou vue. Vous l'utilisez comme ceci:
Html.RenderPartial(MVC.Definition.Views.DefinitionDetails)
ou
Html.RenderPartial(MVC.Definition.Views.DefinitionDetails, myModel)
Juste pour clarifier quelles options fonctionnent exactement:
Les exemples ci-dessous supposent des fichiers cshtml.
RenderPartial
dans un bloc de code:// This looks in default view folder, then shared, checking for .aspx, .cshtml etc
Html.RenderPartial("DefinitionDetails");
// This looks in specified path and requires the extension
Html.RenderPartial("~/Views/Definition/DefinitionDetails.cshtml");
Partial
pour la syntaxe Razor en ligne:// This looks in default view folder, then shared, checking for .aspx, .cshtml etc
@Html.Partial("DefinitionDetails")
// This looks in specified path and requires the extension
@Html.Partial("~/Views/Definition/DefinitionDetails.cshtml")
Remarque: Apparemment, RenderPartial
est légèrement plus rapide que Partial
, mais je m'attends également à ce que les noms à chemin complet soient plus rapides que de laisser MVC rechercher le fichier.
Si vous produisez des partiels en boucle (c'est-à-dire à partir d'une collection dans votre modèle de vue), il est probable que vous devrez passer par des modèles de vue spécifiques:
@foreach (var group in orderedGroups)
{
Html.RenderPartial("~/Views/ControllerName/ViewName.cshtml", group);
}
Je devais juste faire tout cela sur un projet et j'ai trouvé la réponse marquée un peu trompeuse.
Pourriez-vous ne pas copier les partiels dans le dossier partagé, alors faites simplement:
<% Html.RenderPartial("DefinitionDetails", i); %>
et
<% Html.RenderPartial("DefinitionEditActions"); %>