У меня есть панель навигации вверху моего сайта ASP. Net CORE, и я пытаюсь создать параметры меню c Dynami. Пока что я просто пытаюсь заменить некоторые параметры на странице _layout на ViewComponent, как это было в некоторых других проектах.
<header>
<nav class="navTop">
<a class="logo" asp-controller="Home" asp-action="Index">
<img src="~/Images/logo.svg" />
</a>
@{ await Component.InvokeAsync("MainMenu"); }
@{ await Html.RenderPartialAsync("_LoginPartial"); }
</nav>
</header>
У меня в папке есть Component View
Views > Shared > Components > MainMenu > Default.cshtml
Это выглядит так:
@model IEnumerable<MyProject.Models.Home.MainMenuItem>
@ foreach (var item в модели) {@ Html .ActionLink (item.DisplayText, item.Action, item.Controller) }
И ViewComponent InvokeAsyn c выглядит так:
public async Task<IViewComponentResult> InvokeAsync()
{
var x = new DataAccess.Menus.Menu(_context).GetMainMenuItems(User.Identity.Name);
return View(x);
}
И метод DataAccess просто возвращает список MyProject.Models.Home.MainMenuItem
, как и ожидалось, в котором все заполнено нормально, когда я шагаю через, но на странице ничего не получается вместо @{ await Component.InvokeAsync("MainMenu"); }
!
Я делал это раньше в нескольких других проектах и никогда не имел проблем - поэтому я не знаю, почему это могло идти не так. Есть идеи?!
Он переходит в представление, и я даже вижу, как он проходит через foreach
l oop с правильными заполненными свойствами, так почему же на странице ничего не отображается?