DisplayTemplate代码需要修复/反馈

问题描述

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

解决方法

        我认为优化代码的关键是对页脚菜单项使用\“ 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>
    }
希望这可以帮助。