我想知道如何在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
答案 0 :(得分:1)
我猜你有一个你应用于li
的课程,以显示一个selecetd菜单项,这是在你的母版页中。传递此方法的常用方法是ViewBag
或ViewData
。您可以从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)
这就像一个魅力:)
希望它有助于某人