2011-10-19 11 views
36

Mam zdefiniowany obszar (Admin) w mojej aplikacji ASP.NET MVC 3, utworzony _ViewStart.cshtml w tym obszarze i dodano do niego Layout = "~/Views/Shared/_Layout.cshtml";, aby uzyskać ujednolicony układ witryny.Obszary ASP.NET MVC z udostępnionym układem

Dodałem też następujący kod do _Layout.cshtml:

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

Obszar Admin jest wyświetlany poprawnie mający _Layout.cshtml jako jego układu. Ale wszystkie linki nawigacyjne na stronie wskazują teraz podfolder Admin.

Na przykład w moim układzie mam <li>@Html.ActionLink("About Us", "About", "Home")</li>, który wskazuje na Mysite/Home/About. Ale po kliknięciu linku administratora link "O nas" wskazuje na /Admin/Home/About.

Co należy zrobić, aby linki _Layout.cshtml wskazywały właściwy adres?
Dzięki.

Odpowiedz

45

Wystarczy określić pusty obszar dla nich, jeśli mają one być podawane z kontrolerami root:

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