Как добавить частичный вид на страницу макета в mvc core 3.1 - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь отобразить динамическое c меню на странице макета на моем веб-сайте электронной коммерции, используя mvc core 3.1. Я не знаю, как добавить контроллер в частичное представление, или есть лучший способ отобразить частичное представление в ядре

Ниже мой код

<partial name="_MegaMenu"/>

Мой частичный вид

@model IEnumerable<SmartEcom.Models.Nav>
    <ul>
        @foreach (var item in Model)
        {
            <li class="submenu">
                <a href="javascript:void(0);" class="show-submenu">@item.Title</a>
                <ul>
                    <li><a href="index.html">Slider</a></li>
                    <li><a href="index-2.html">Video Background</a></li>
                    <li><a href="index-3.html">Vertical Slider</a></li>
                    <li><a href="index-4.html">GDPR Cookie Bar</a></li>
                </ul>
            </li>
        }
</ul>

Ниже мой контроллер

 public IActionResult PartialViewMegaMenu()
        {
            var navigationlist = _unitOfWork.Nav.GetAll();
            return PartialView("_MegaMenu",navigationlist);
        }

1 Ответ

0 голосов
/ 22 апреля 2020

Вам нужен компонент представления, здесь, а не частичное представление.

public class MegaMenuViewComponent : ViewComponent
{
    private readonly UnitOfWork _unitOfWork;

    public MegaMenuViewComponent(UnitOfWork unitOfWork)
    {
        _unitOfWork = unitOfWork; 
    }

    public IViewComponentResult Invoke()
    {
        var navigationlist = _unitOfWork.Nav.GetAll();
        return View(navigationlist);
    }
}

Затем поместите HTML для того, что было вашим частичным представлением, в представление ~/Views/Shared/Components/MegaMenu/Default.cshtml. Наконец, в макете добавьте следующее, где вы хотите, чтобы меню появилось:

@await Component.InvokeAsync("MegaMenu")

См. Документацию по компонентам вида для получения дополнительной информации.

...