1

我在网页顶部有一些标签:主页、功能、联系人等。

我需要将我当前所在的类别标记为 .

如何使用 razor 语法对我的 _Layout.cshtml 页面进行适当的编码,这样我就不必手动将每个页面的相应选项卡标记为 class="current" ?

<li class="current">@Html.ActionLink("Home", "Index", "Home")
<li>@Html.ActionLink("Blog", "Blog", "Home")
<li>@Html.ActionLink("Portfolio", "Portfolio", "Home")
4

2 回答 2

3

您可以做到的示例方式。

@helper BuildLink(string name, string action, string controller)
{
    var url = Url.Action(action, controller);
    bool isActive = Request.Url.AbsolutePath.Equals(url, StringComparison.InvariantCultureIgnoreCase);
    <li class="@(isActive ? "current" : String.Empty)"><a href="@(url)">@name</a></li>
}

@BuildLink("Home", "Index", "Home")
@BuildLink("Blog", "Blog", "Home")
@BuildLink("Portfolio", "Portfolio", "Home")
于 2012-04-30T20:53:03.350 回答
0

您可以在每个控制器上设置 ViewData["Home"] = "activeTab" 类,并在视图中使用该信息。

如果采用该 viewData 字典的值,这将使选项卡处于活动状态。很简单也很干净。

内部控制器设置 viewdata 像这样

ViewData["SomeTab"] = "activeTab";
    return View("Index");

视图面:

<li class="<@ ((string)ViewData["SomeTab"] ?? "") >"><@Html.ActionLink("SomeTab", "Index", "Home")></li>
<li class="<@ ((string)ViewData["MyPage"] ?? "") %>"><@Html.ActionLink("MyPage", "MyPage", "")></li>
于 2012-04-30T20:57:53.453 回答