从MVC中的局部视图加载菜单

本文关键字:视图 加载 菜单 局部 MVC | 更新日期: 2023-09-27 18:17:44

我试图将菜单从_Layout中分离出来。cshtml,但我有困难。

我的文件位于如下位置

Views/Home/Index
Views/Shared/_Layout
Views/Shared/_Menu
在_Layout

。cshtml文件,我有下面的代码…

@Html.Partial("_Menu")

菜单动作位于HomeController中,它看起来像下面

public ActionResult Menu()
{
    MenuModel menu = new MenuModel();
    return PartialView("_Menu", menu);
}

_Menu将下面的代码作为第一行

@model DomainModel.MenuModel

当我在VS上运行项目时,一切看起来都很完美,但我没有在HomeController中调用Menu()动作。它以某种方式找到_Menu并完美显示它。但是我不明白为什么它不调用Menu()动作?

从MVC中的局部视图加载菜单

@Html.Partial("_Menu")将只呈现HTML视图,与控制器无关。如果你想调用控制器,使用@{ Html.RenderAction("Menu", "Home"); }

操作是根据请求调用的。因此,你必须发送一个请求,例如通过Ajax到YourController/YourAction或在浏览器中键入url。

@Html.Partial()只是用给定的数据呈现视图。

要通过调用操作来呈现视图,请参阅Ahmends的回答https://stackoverflow.com/a/40589584/3936440。