DisplayTemplate code,则需要修复/反馈 [英] DisplayTemplate code need fix/feedback

查看:108
本文介绍了DisplayTemplate code,则需要修复/反馈的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为_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)
{
    < D​​IV 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)
    {
        < D​​IV 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆