我有一个名为_FooterMenu的DisplayTemplate,其中编码了动态页脚菜单。
很少要问
有没有办法简化DisplayTemplate代码?
我应该使用HtmlHelper隐藏逻辑吗?
布局页面中的代码
@Html.DisplayForModel("_FooterMenu")
// DisplayTemplate代码。
@model HomeViewModel
@{var distMenu = Model.FooterMenu.Where(c => c.Title != null).Select(m => new {Title = m.Title}).Distinct() ;}
@foreach (var i in distMenu)
{
<div class="linksarea">
<h5>@i.Title</h5>
<ul>
@foreach (var item in Model.FooterMenu.FindAll(x => x.Title == i.Title))
{
<li>
@Html.ActionLink(@item.DisplayName, "Page", "Home", new { name = @item.UrlName }, null)
</li>
}
</ul>
</div>
}
答案 0 :(得分:1)
我认为优化代码的关键是为页脚菜单项使用“GroupBy”,这将减少对2个ForEach循环的需求。我嘲笑了你的MVC应用程序,这是我想出的代码片段:
@{
var distMenu = Model.FooterMenu.GroupBy(q => q.Title);
}
@foreach (var grp in distMenu)
{
<div class="linksArea">
<h5>@grp.Key</h5>
<ul>
@foreach(var item in grp)
{
<li>
@Html.ActionLink(@item.DisplayName, "Page", "Home", new { name = @item.Url }, null)
</li>
}
</ul>
</div>
}
希望这会有所帮助。