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 Webサイトをセットアップし、それを使用してテンプレートをレンダリングすることでした。それは私が今まで見た唯一の提案であり、私が望んでいたように機能しました。

于 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 に答える