无论如何在Razor Generator模板中创建一个递归帮助器

时间:2012-11-02 13:32:25

标签: c# razor html-helper razorgenerator

我使用Razor Generator创建了一个模板。现在我需要在递归函数中创建一个嵌套的项目列表。我尝试了this solution,但后来我的所有代码都被标记为错误。

@* Generator: Template *@


@functions
{
    public IList<Models.Category> Topics
    {
        get;
        set;
    }

}

@helper ShowTree(IList<Models.Category> topics)
{
    <ul>
        @foreach (var topic in topics)
        {
            <li>
                @topic.Title
                @if (topic.Childs.Count > 0)
                {
                    @{
                         ShowTree(topic.Childs);
                     }
                }
            </li>
        }
    </ul>
}

添加帮助后我得到的一些无关错误:

-Error  3 Invalid expression term ';'
Error   4 Feature 'lambda expression' cannot be used because it is not part of the ISO-2 C# language specification
Error   13 Feature 'implicitly typed local variable' cannot be used because it is not part of the System C# language specification
Error   6 The name 'WriteLiteralTo' does not exist in the current context

但是当我删除辅助方法时,所有这些都消失了!

我做错了什么或者在Razor模板中创建助手是不可能的?

1 个答案:

答案 0 :(得分:0)

以下代码可以使用。

@helper ShowTree(IList<Models.Category> topics)
{
    if (topics != null && topics.Any()) {
    <ul>
        @foreach (var topic in topics)
        {
            <li>
                @topic.Title
                @ShowTree(topic.Childs)
            </li>
        }
    </ul>
    }
}