Html.Action使用不同的链接路径呈现内部的部分菜单

时间:2015-11-08 19:55:35

标签: c# asp.net-mvc asp.net-mvc-5.2 child-actions

我在主布局的标题内渲染一个菜单小部件。

_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");
    }
}

这是浏览器中的渲染输出

enter image description here

为什么渲染的超链接是修改后的控制器名称?更多这些链接应用了小部件本身的控制器名称=&gt; “菜单” 那是为什么?

1 个答案:

答案 0 :(得分:1)

您还需要在菜单路径中声明控制器

@Html.ActionLink("Projects", "Index", "Projects")