4

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

@* 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 模板中创建助手?

4

2 回答 2

0

对于它的价值,由于没有人提供更好的答案,因此我们放弃了使用 RazorGenerator 模板正是出于这个原因。

我的问题到此结束,我们的答案是在内部服务器上建立一个本地 MVC 网站,并使用它来呈现我们的模板。这是我见过的唯一一个按照我想要的方式工作的建议。

于 2012-11-08T23:47:39.917 回答
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>
    }
}
于 2012-11-02T14:23:42.567 回答