ASP.NET MVC Области с общим макетом - PullRequest
39 голосов
/ 20 октября 2011

Я определил область (Admin) в своем приложении ASP.NET MVC 3, создал _ViewStart.cshtml в этой области и добавил Layout = "~/Views/Shared/_Layout.cshtml"; к ней, чтобы получить унифицированную разметку сайта.

Я также добавил следующий код к _Layout.cshtml:

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

Область Admin отображается правильно, имея _Layout.cshtml в качестве макета. Но все навигационные ссылки на странице теперь указывают на подпапку Admin.

Например, в моем макете у меня есть <li>@Html.ActionLink("About Us", "About", "Home")</li>, что указывает на Mysite/Home/About. Но после нажатия на ссылку администратора, ссылка «О нас» указывает на /Admin/Home/About.

Что я должен сделать, чтобы ссылки _Layout.cshtml указывали на правильный адрес?
Благодаря.

1 Ответ

48 голосов
/ 20 октября 2011

Просто укажите для них пустую область, если они будут обслуживаться с корневых контроллеров:

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