【问题标题】:MVC Razor recursive list numberingMVC Razor 递归列表编号
【发布时间】:2013-09-11 08:04:10
【问题描述】:

我有一个这样的递归列表:

@ShowTree(pages, 1)

@helper ShowTree(List<pages> pages, int level)
{

    <ul>
        @for (int i = 0; i < pages.Count(); i++)
        {

            <li>
                <h1>@pages[i].PageName</h1>

                @if (pages[i].children.Any())
                {
                    @ShowTree(pages[i].children, level + 1)
                }
            </li>
        }
    </ul>
}

这一切正常,但我需要列表格式为:

1

1.1

1.2

1.2.1

1.2.2

1.3

等等。

我有“级别”参数的原因是早期尝试创建它,但没有运气。

另外,我需要调整每个标题,&lt;h1&gt;&lt;h2&gt;&lt;h3&gt; (...)。

感谢所有帮助!谢谢。

【问题讨论】:

  • 如果有什么办法可以用css解决这个问题,那也是一个很好的解决方案。

标签: css asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

你可以试试这样的:

@ShowTree(pages)

@helper ShowTree(List<pages> pages, int level=1, string prefix ="")
{
    <ul>
        @for (int i = 0; i < pages.Count(); i++)
        {

            <li>
                @Html.Raw(String.Format("<h{0}>", level)) @String.Format("{0}{1}", prefix, i + 1) @pages[i].PageName @Html.Raw(String.Format("</h{0}>", level))

                @if (pages[i].children.Any())
                {
                    @ShowTree(pages[i].children, level + 1, String.Format("{0}{1}.", prefix, i + 1))
                }
            </li>
        }
    </ul>
}

【讨论】:

  • 除了头部标签显示为纯文本之外,其他一切似乎都可以正常工作。
  • @Annish 是的,缺少 Html.Raw。我想你现在想通了。无论如何编辑我的答案。谢谢跟进
猜你喜欢
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 2016-10-21
相关资源
最近更新 更多