1

Web ページの上部に、ホーム、機能、連絡先などのタブがいくつかあります。

現在のカテゴリを としてマークする必要があります。

各ページの適切なタブを手動で class="current" としてマークする必要がないように、カミソリ構文を使用して _Layout.cshtml ページを適切にコーディングするにはどうすればよいですか?

<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["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 に答える