【问题标题】:Is there anyway to create a recursive helper in Razor Generator Template无论如何要在 Razor Generator 模板中创建递归助手
【发布时间】:2012-11-02 13:32:25
【问题描述】:

我使用 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 模板中创建助手?

【问题讨论】:

  • 你遇到了什么错误?
  • @Bobson :我在问题中添加了错误
  • 我很困惑。尝试删除 ShowTree() 周围的 @{ },因为您已经在代码块中。
  • @Bobson : 如果我删除 @{} 那么该行也会被标记为错误!

标签: c# razor html-helper razorgenerator


【解决方案1】:

下面的代码将起作用。

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

【讨论】:

  • RazorGenerator 模板的行为与 MVC 的工作方式不同,因为我已经了解到我的烦恼。所以仅仅因为它可以在应用程序中工作并不意味着它可以在这里工作。
  • 也就是说,如果只是代码语法问题,这可能是正确的解决方法。
  • 有效点。仅仅因为它在 MVC 应用程序中工作并不意味着它在模板中工作。已删除投票。
  • 好吧,我要做猴子的叔叔。
  • 我遇到的问题是 RazorGenerator 模板既不继承自标准模板,也不继承自标准视图。所以你不能@Include,你也没有@Html
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2018-03-01
    • 1970-01-01
    • 2018-06-21
    • 2023-03-30
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多