你可以寫一個自定義的helper方法:
public static MvcHtmlString MenuItem(
this HtmlHelper htmlHelper,
string text,
string action,
string controller
)
{
var li = new TagBuilder("li");
var routeData = htmlHelper.ViewContext.RouteData;
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");
if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
{
li.AddCssClass("selected");
}
li.SetInnerText(text);
return MvcHtmlString.Create(li.ToString());
}
然後:
<ul>
@Html.MenuItem("Home", "home", "home")
@Html.MenuItem("About", "about", "home")
@Html.MenuItem("Contact", "contact", "home")
@Html.MenuItem("Blog", "blog", "home")
</ul>
的輔助檢查當前的動作和控制器,如果他們匹配一個作爲參數傳遞給幫手它通過將selected
CSS類附加到li
。
嗨,我會在哪裏添加這個? – LocustHorde
@LocustHorde,你可以將它定義爲'HtmlHelper'類的擴展方法。你可以把它放在你想要的任何靜態類中。有關編寫自定義HTML助手的更多信息,請參閱以下文章:http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs –