ASP.NET MVCの部分ビュー内で現在のビューの名前を決定する
-
16-09-2019 - |
質問
テストASP.NET MVCアプリケーションで部分的なビューがあります。このビューは、アプリケーションメニューボタンを表示する責任があります。
現在アクティブなページであるボタンの色を変更したいです。現在、私は次のようなものを書きました:
<ul id="menu">
<% var activeClass = (string)(ViewData["currentPage"]) == "Home" ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>
<% activeClass = (string)(ViewData["currentPage"]) == "About" ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>
コントローラーアクションでビューデータを設定します。
//in home action
ViewData["currentPage"] = "Home";
//in About action
ViewData["currentPage"] = "About";
これは機能しますが、すべてのコントローラーアクションを変更する必要があります。ビューを自動的に検出し、それに応じて色を変更するために部分ビューコードを何らかの形で変更するより良い方法はありますか?
解決
viewdata ["currentPage"]は必要ないと思います。使用する ViewContext.RouteData.Values
代わりは:
これを試して:
<ul id="menu">
<% var activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
&& ViewContext.RouteData.Values["Action"] == "Home") ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>
<% activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
&& ViewContext.RouteData.Values["Action"] == "About") ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>
所属していません StackOverflow