Общая компоновка с разными конструктивными элементами для каждого контроллера в ASP MVC 4 - PullRequest
1 голос
/ 21 марта 2012

У меня есть базовый макет со структурой сайта. В этом макете по умолчанию я определяю тег заголовка, структуру тела и нижний колонтитул:

<html>
<head>...</head>
<body>
<div id="sidebar">...</div>
<div id="entry">@RenderSection("Entry", true)</div>
<div id="footer">...</div>
</body>

Каждое действие в каждом контроллере определяет в своем представлении собственный раздел ввода.

<!-- in View/Index.cshtml -->
@section Entry {
   Hello from Index action.
}

<!-- in View/Uploads.cshtml -->
@section Entry {
   Hello from Uploads action.
}

<!-- in View/Users.cshtml -->
@section Entry {
   Hello from Users action.
}

Но я также хочу определить разные боковые панели для каждого контроллера. Если я добавлю @RenderSection («SideBar», true) в основной макет, я должен повторить код боковой панели для каждого действия контроллера. Я также не могу определить код дизайна боковой панели в основном макете, потому что хочу использовать разные sibebars для каждого контроллера (но я хочу использовать одну и ту же боковую панель для каждого действия в контроллере).

Как решить эту проблему, не повторяя код дизайна боковой панели в каждом представлении?

Я нашел решение https://stackoverflow.com/a/5573970, но для каждого контроллера потребуется дублирование базовой структуры сайта.

Спасибо за ответы и извините за мой плохой английский: (.

1 Ответ

2 голосов
/ 21 марта 2012

Put @RenderSection("SideBar", false)

Тогда вы можете определить сечение только для определенных макетов контроллера.

Возможно, вы захотите определить отдельные макеты для каждого контроллера, и каждое представление в этом контроллере будет использовать макет контроллера (где вы можете разместить свою боковую панель) вместо макета по умолчанию. Макеты контроллера будут использовать макет по умолчанию.

...