ASP.NET MVC Areas with shared layout
Asked Answered
C

1

40

I have defined an area (Admin) in my ASP.NET MVC 3 application, created _ViewStart.cshtml in that area and addedLayout = "~/Views/Shared/_Layout.cshtml"; to it to have a unified site layout.

I also added the following code to _Layout.cshtml:

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

The Admin area is displayed properly having _Layout.cshtml as its layout. But all the navigation links in the page now point to Admin subfolder.

For example in my layout I have <li>@Html.ActionLink("About Us", "About", "Home")</li>, which points to Mysite/Home/About. But after clicking the admin link, the "About Us" link points to /Admin/Home/About.

What should I do to have _Layout.cshtml links pointing to the right address?
Thanks.

Cyme answered 19/10, 2011 at 21:40 Comment(0)
F
49

Simply specify a blank area for them if they are to be served from root controllers:

<li>@Html.ActionLink("About Us", "About", "Home", new { area = "" }, null)</li>
Forequarter answered 19/10, 2011 at 21:41 Comment(1)
For @Html.Action(), it throws compilation error when specifying it as blank area as follows '@Html.Action("About", "Home", new { area = "" })' Need help to resolve this.Keifer

© 2022 - 2024 — McMap. All rights reserved.