Html.Action 使用不同的 link 路由在内部呈现部分菜单
Html.Action renders the partial menu inside with different link routes
我在主布局的 header 中呈现一个菜单小部件。
_Layout.cshtml
@Html.Action("Menu", "Menu", new { area = "Application" })
FullMenu.cshtml
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href='#'><span class='glyphicon glyphicon-education'></span></a></li>
<li>@Html.ActionLink("Projects", "Index")</li>
<li>@Html.ActionLink("Tests", "Index" })</li>
</ul>
@Html.Partial("_LoginPartial")
</div>
MenuController.cs
public class MenuController : Controller
{
[ChildActionOnly]
public ActionResult Menu()
{
string controller = (string) ControllerContext.ParentActionViewContext.RouteData.Values["controller"];
if (controller == "Projects")
{
return PartialView("StartMenu");
}
else
return PartialView("FullMenu");
}
}
这是浏览器中的渲染输出
为什么呈现的超链接修改了控制器名称?这些链接甚至应用了小部件本身的控制器名称 => "Menu"
这是为什么?
你也需要在菜单路由中声明控制器
@Html.ActionLink("Projects", "Index", "Projects")
我在主布局的 header 中呈现一个菜单小部件。
_Layout.cshtml
@Html.Action("Menu", "Menu", new { area = "Application" })
FullMenu.cshtml
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href='#'><span class='glyphicon glyphicon-education'></span></a></li>
<li>@Html.ActionLink("Projects", "Index")</li>
<li>@Html.ActionLink("Tests", "Index" })</li>
</ul>
@Html.Partial("_LoginPartial")
</div>
MenuController.cs
public class MenuController : Controller
{
[ChildActionOnly]
public ActionResult Menu()
{
string controller = (string) ControllerContext.ParentActionViewContext.RouteData.Values["controller"];
if (controller == "Projects")
{
return PartialView("StartMenu");
}
else
return PartialView("FullMenu");
}
}
这是浏览器中的渲染输出
为什么呈现的超链接修改了控制器名称?这些链接甚至应用了小部件本身的控制器名称 => "Menu" 这是为什么?
你也需要在菜单路由中声明控制器
@Html.ActionLink("Projects", "Index", "Projects")