39 votes

ASP.NET MVC Areas avec mise en page partagée

J'ai défini un domaine (Admin) dans mon application ASP.NET MVC 3, créé _ViewStart.cshtml dans cette zone et a ajouté Layout = "~/Views/Shared/_Layout.cshtml"; pour avoir une présentation unifiée du site.

J'ai également ajouté le code suivant à _Layout.cshtml :

if (HttpContext.Current.User.IsInRole("Admin"))
{
    <li>@Html.ActionLink("Items List", "Index", "Items", new { area = "Admin" }, null)</li>
}

El Admin est affichée correctement ayant _Layout.cshtml comme sa mise en page. Mais tous les liens de navigation de la page pointent désormais vers Admin sous-dossier.

Par exemple, dans ma mise en page, j'ai <li>@Html.ActionLink("About Us", "About", "Home")</li> ce qui indique Mysite/Home/About . Mais après avoir cliqué sur le lien d'administration, le lien "À propos de nous" pointe vers /Admin/Home/About .

Que dois-je faire pour que les liens _Layout.cshtml pointent vers la bonne adresse ?
Merci.

48voto

Darin Dimitrov Points 528142

Il suffit de spécifier une zone vide pour eux s'ils doivent être servis à partir des contrôleurs de racine :

<li>@Html.ActionLink("About Us", "About", "Home", new { area = "" }, null)</li>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X