アドバンストメニューで大したことはありませんでした。私がそれを使うのを妨げたバグがいくつかありました。私が見つけた
私のソリューションは、きれいなコードではなく、リファクタリングする必要がありますが、ここにある: 私はPartialViewは、私は2番目をしたいLayout.cshtmlためModel.Navigation
コードを(キャストレンダリング
PartialViewのコード
@model IEnumerable<dynamic>
@{
IEnumerable<dynamic> subNavLinks = null;
string requestUrl = Request.Path.Replace(Request.ApplicationPath, string.Empty).TrimEnd('/').ToUpperInvariant();
IEnumerable<dynamic> children = Model.FirstOrDefault(x => x.MenuName == "main").Items;
var menuItems = children.Select(x => x.Item);
var parent = menuItems.FirstOrDefault(x => x.Text.TextHint.Equals(requestUrl, StringComparison.InvariantCultureIgnoreCase));
if(parent!=null)
{
subNavLinks = menuItems.Where(x => x.Position.StartsWith(parent.Position.Substring(0,1)) && x.Position.Length>1);
}
}
<nav>
<ul class="subNav">
@if (subNavLinks != null)
{
foreach (var item in subNavLinks)
{
<li><a class="@className" href="@item.Href">@item.Text</a></li>
}
}
</ul>
</nav>
'VAR subNavLinks =メニューアイテム{Html.RenderPartial( "SubNavMenu"、(IEnumerableを)Model.Navigation)} @表示するサブメニュー)
.Where(x => x.Position.StartsWith(parentPosition.Substring(0,1))&& x.Position.Length> 1); ' – dave