【问题标题】:Display post content in piranha cms在食人鱼 cms 中显示帖子内容
【发布时间】:2019-03-12 11:05:38
【问题描述】:

我正在尝试显示页面内容,因为使用的内容已保存在管理器部分。

在我看来,我有以下代码:

@foreach (var block in Model.Blocks)
    {
      if (block is HtmlBlock htmlBlock)
      {
        <partial name="../Cms/DisplayTemplates/HtmlBlock.cshtml" for="@htmlBlock" />
      }
      if (block is HtmlColumnBlock columnBlock)
      {
        <partial name="../Cms/DisplayTemplates/HtmlColumnBlock.cshtml" for="@columnBlock" />
      }
      if (block is ImageBlock imageBlock)
      {
        <partial name="../Cms/DisplayTemplates/ImageBlock.cshtml" for="@imageBlock" />
      }
      if (block is QuoteBlock quoteBlock)
      {
        <partial name="../Cms/DisplayTemplates/ImageBlock.cshtml" for="@quoteBlock" />
      }
      if (block is TextBlock textBlock)
      {
        <partial name="../Cms/DisplayTemplates/TextBlock.cshtml" for="@textBlock" />
      }
    }

我很确定有一种更简单的方法可以做到这一点,但我找不到其他任何方法。

所以,如果我使用这种方法,当我在管理器中创建新元素时,我将不得不继续扩展这个 foreach 吗?感觉有些不对劲。

如果我使用@Html.DisplayFor(m =&gt; m.Blocks),它只会显示命名空间名称。有什么想法吗?

【问题讨论】:

    标签: asp.net-core piranha-cms


    【解决方案1】:

    找到解决方案: 为了使用@Html.DisplayFor(m => m.Blocks),您必须在共享视图文件夹中或作为使用@Html.DisplayFor( m => m.Blocks)。

    例如我们有以下文件夹:

    Views Articles Index.cshtml Shared SomeOtherFolder

    在 Articles 文件夹内的 Index.cshtml 文件中使用 @Html.DisplayFor(m => m.Blocks) 的可能解决方案是:

    在 Articles of Shared 文件夹中有 DisplayTemplates(带有块模板)文件夹。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      相关资源
      最近更新 更多