2011-10-19 10 views
36

Ho definito un'area (Admin) nella mia applicazione ASP.NET MVC 3, creato _ViewStart.cshtml in quell'area e aggiunto Layout = "~/Views/Shared/_Layout.cshtml"; ad esso per avere un layout del sito unificato.ASP.NET MVC Aree con layout condiviso

Ho anche aggiunto il seguente codice per _Layout.cshtml:

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

L'area Admin viene visualizzato avendo correttamente _Layout.cshtml come il suo layout. Ma tutti i link di navigazione nella pagina ora puntano alla sottocartella Admin.

Ad esempio nel mio layout ho <li>@Html.ActionLink("About Us", "About", "Home")</li>, che punta a Mysite/Home/About. Ma dopo aver cliccato sul link amministratore, il link "Chi siamo" punta a /Admin/Home/About.

Cosa devo fare per avere collegamenti _Layout.cshtml che puntano all'indirizzo giusto?
Grazie.

risposta

45

sufficiente specificare un'area vuota per loro se sono destinati ad essere serviti dai controller di root:

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