@Barabasishe

Как в проекте на ASP.NET MVC отобразить на главной странице макет меню и основную рабочую область?

Есть основной стандартный Layout, в котором отображаю части верхнего меню _NavigationLayout, боковое меню _PanelNewsLayout, рабочую область с помощью @RenderBody().

<!DOCTYPE html>
<html>
   ...
    <body>
        @Html.Partial("_NavigationLayout")
        
        <div class="main">
            @Html.Partial("_PanelNewsLayout")
            
            <div class="content">
                <div class="container">
                    @RenderBody()
                </div>
            </div>
        </div>
        ...
    </body>
</html>


Проблема в том, что боковое меню _PanelNewsLayout выглядит как дерево и должно формироваться с помощью данных из базы данных. Сейчас я сделал просто: в контроллере NewsController обрабатываются данные из базы и формируются в нужную модель, которая передается представлению Index и отрисовывается все это в рабочей области с помощью RenderBody. Теперь надо сделать так, чтобы все это дерево было в боковом меню.

Попытался перенести код из представления Index в _PanelNewsLayout, но требуется модель.
Как вариант, можно использовать TempData или Session для хранения модели.

Но хорошо ли это?
Возможно, есть другой вариант с заменой макета _PanelNewsLayout на представление с контроллером?
  • Вопрос задан
  • 3515 просмотров
Пригласить эксперта
Ответы на вопрос 1
@barbarOFF
Не смешивай разметку с логикой. Как вариант, можно через jQuery загружать меню - вызывать отдельный метод контроллера.
Передавать можно через ViewBag - посмотри внимательнее, как у тебя ViewBag.Title передается со страниц в _Layout - в стандартном шаблоне ASP.NET MVC
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы