基本的に、私がやったことは、@helper を作成してメニュー項目を作成することでした。現在アクティブなメニュー項目を何らかの方法でモデルに渡し、その項目を作成するときに href を # に設定するだけです。これは、javascript/jquery でも実行できます。
これが私の @helper メソッドでした:
@helper MenuItemDesigner(string MenuItemName, bool hasAccess, string view, string controller, string areaName, MenuItems.Name menuItem, string glyphicon, string badge)
{
if (hasAccess)
{
<a
@if (Model.ActiveMenuItem == menuItem)
{
<text>id = "@menuItem" href="#"</text>
@Html.Raw("class= 'list-group-item active'");
}
else
{
<text>id = "@menuItem" href="@Url.Action(view, controller, new { Area = areaName })"</text>
@Html.Raw("class= 'list-group-item'");
}
><span class="@glyphicon"></span> @MenuItemName <span class="badge" data-val="0" style="display:none">@badge</span>
</a>
}
}
これがすべてのシナリオに当てはまるわけではありませんが、参考として使用できます。重要な部分は、現在アクティブなメニュー項目を知り、その href="#" を設定することですが、それを行う必要があります。