菜单中的选定选项卡

时间:2011-12-14 16:58:08

标签: javascript asp.net-mvc-3 razor html-lists

我想知道如何在mvc3 razor中选择标签

我的菜单代码是 - >

<ul id="iecMenu" class="zeroPadding">
   <li id="menuHome">@Html.ActionLink("Home","Index", "Home")</li>
   <li id="menuOverView">@Html.ActionLink("OverView","Trips", "Trip")</li>
   <li id="menuParse">@Html.ActionLink("Parse", "Create", "Day")</li>
   <li id="menuSettings">@Html.ActionLink("Settings", "Index", "Settings")</li>
</ul>

是否有一种简单的方法可以选择其中一个标签,ps。还有子页面,但我只想要选择这些项目。

由于 sushiBite

2 个答案:

答案 0 :(得分:1)

我猜你有一个你应用于li的课程,以显示一个selecetd菜单项,这是在你的母版页中。传递此方法的常用方法是ViewBagViewData。您可以从Action

传递它
ViewBag.MenuItem = "menuHome";

然后母版页将会读取

<li id="menuHome" @ViewBag.MenuItem == "menuHome"? "class=\"selected"\"":"">@Html.ActionLink("Home","Index", "Home")</li>

或者你可以把它放在一个属性中(它继承自ActionFilterAttribute,你可以在动作和控制器上应用它。要考虑的其他事情是将菜单选择放入枚举,到让您的代码更强类型,而不是比较字符串。

答案 1 :(得分:0)

我最终使用ViewBag创建了一个小脚本。 所以在每个控制器中我创建了一个构造函数

public CurrencyFilterController()
{
    ViewBag.MenuItemScript = helper.createMenuItemScript("menuSettings");
}

CreateMenuItemScript方法 - &gt;

public string createMenuItemScript(string menuItem)
{
    StringBuilder sb = new StringBuilder();
    sb.AppendLine("<script type=\"text/javascript\">");
    sb.AppendLine("$(document).ready(function () {");
    sb.AppendLine("$(\"#" + menuItem + "\").addClass(\"selected\")");
    sb.AppendLine("});");
    sb.AppendLine("</script>");
    return sb.ToString();
}

然后在我的_Layout.cshtml

@Html.Raw(ViewBag.MenuItemScript)

这就像一个魅力:)

希望它有助于某人