DisplayTemplate 代码需要修复/反馈

发布于 2024-11-10 16:22:59 字数 976 浏览 0 评论 0原文

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼中杀气 2024-11-17 16:22:59

我认为优化代码的关键是为页脚菜单项使用“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>
    }

希望这会有所帮助。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文