DisplayTemplate code,则需要修复/反馈 [英] DisplayTemplate code need fix/feedback
问题描述
我有一个名为_FooterMenu DisplayTemplate在下面动态页脚菜单为codeD。
几件事情要问
有什么办法来简化DisplayTemplate code?
我应该使用的HtmlHelper隐藏的逻辑?
code在页面布局
@ Html.DisplayForModel(_ FooterMenu)
// DisplayTemplate code。
@model HomeViewModel@ {VAR distMenu = Model.FooterMenu.Where(C =>!c.Title = NULL)。选择(M =>新建{标题= m.Title})是不同的();}
@foreach(VAR我在distMenu)
{
< DIV CLASS =linksarea>
<&H5 GT; @ I.标题< / H5>
< UL>
@foreach(在Model.FooterMenu.FindAll(VAR项x => x.Title == I.标题))
{
<立GT;
@ Html.ActionLink(@ item.DisplayName,页面,家,新的{名= @ item.UrlName},NULL)
< /李>
}
< / UL>
< / DIV>
}
我认为关键要优化code是使用一个GROUPBY为您页脚的菜单项,这将缓解2 foreach循环的需要。我嘲笑你的MVC应用程序,这里是我想出了code片断:
@ {
变种distMenu = Model.FooterMenu.GroupBy(Q => q.Title);
} @foreach(在distMenu VAR GRP)
{
< DIV CLASS =linksArea>
<&H5 GT; @ grp.Key< / H5>
< UL>
@foreach(GRP中的VAR项)
{
<立GT;
@ Html.ActionLink(@ item.DisplayName,页面,家,新的{名= @ item.Url},NULL)
< /李>
}
< / UL>
< / DIV>
}
希望这有助于。
I have a DisplayTemplate called _FooterMenu in which below dynamic footer menu is coded.
Few things to ask
Is there any way to simplify DisplayTemplate code?
Should I used HtmlHelper to hide logic?
Code in layout page
@Html.DisplayForModel("_FooterMenu")
//DisplayTemplate code.
@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>
}
I think the key to optimizing your code is to use a "GroupBy" for your Footer Menu Items, this will alleviate the need for 2 ForEach loops. I mocked up your MVC app, here is the code snippet I came up with:
@{
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>
}
Hope this helps.
这篇关于DisplayTemplate code,则需要修复/反馈的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!