我有一个 ASP.NET MVC4 应用程序,我的左侧导航菜单位于 CommonController 下,所以从我的 _Layout.cshtml 中我将它呈现为:
<div class="leftmenu">
@Html.Action("LeftMenu", "Common")
</div><!--leftmenu-->
现在,在我的局部视图LeftMenu中,我拥有用于显示菜单项的所有 HTML 代码,我想做的是根据当前页面控制器和操作突出显示正确的菜单项。
左菜单.cshtml
<ul class="nav nav-tabs nav-stacked">
<li class="nav-header">Navigation Menu</li>
<li>@Html.MenuLink("Test Link", "Index", "Home", "active",true)</li>
......
现在我使用以下帮助代码:
public static HtmlString MenuLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, string activeClass, bool checkAction)
{
string currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
string currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller");
if (string.Compare(controllerName, currentController, StringComparison.OrdinalIgnoreCase) == 0 && ((!checkAction) || string.Compare(actionName, currentAction, StringComparison.OrdinalIgnoreCase) == 0))
{
return htmlHelper.ActionLink(linkText, actionName, controllerName, null, new { @class = activeClass });
}
return htmlHelper.ActionLink(linkText, actionName, controllerName);
}
我遇到的问题是 currentController 是“Common”,因为它位于 LeftMenu 部分视图的位置。
我需要获取主页当前控制器和当前操作以使其工作。
关于如何解决它的任何线索或建议?
非常感谢