Это проект MVC .DotNet Core. В _Layout.cshtml я хотел бы отображать элементы меню в зависимости от логики контекста. Пользователь должен сначала выбрать HouseGroup в списке, чтобы страница House была доступна.
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>
<li><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li>
<li><a asp-area="" asp-controller="HouseGroups" asp-action="Index">HouseGroup</a></li>
<li><a asp-area="" asp-controller="Houses" asp-action="Index">House</a></li>
</ul>
</div>
</div>
</nav>
Это означает, что изначально меню HouseGroup не отображается и становится видимым, когда выбран дом на странице Дом. Чтобы сохранить в памяти активную HouseGroup, я храню HouseGroupID в объекте NavigationContext, который я зарегистрировал в Startup.cs как Singleton:
services.AddSingleton<NavigationContext>();
Я не понимаю, как правильно получить, что список меню в _Layout.cshtml зависит от бизнес-логики. Как я мог связать это с контроллером, не испытывая проблем с другими представлениями, которые отображаются в @RenderBody (), такими как представления House и HouseGroup (Views / Houses / Index.cshtml, Views / Houses / Create.cshtml, Views / HouseGroups) /Index.cshtml, Views / HouseGroups / Edit.cshtml, ...).
Спасибо за вашу помощь.