2011-05-30 76 views
1

我有一个名为_FooterMenu的DisplayTemplate,其中下面的动态页脚菜单被编码。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

我认为关键要优化你的代码是使用“的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> 
    } 

希望这会有所帮助。