DisplayTemplate代码需要修复/反馈

时间:2011-05-30 19:44:10

标签: asp.net-mvc-3

我有一个名为_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>
}   

1 个答案:

答案 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>
    }

希望这会有所帮助。