在食人鱼cms中显示帖子内容

时间:2019-03-12 11:05:38

标签: asp.net-core piranha-cms

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

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

@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 => m.Blocks),则仅显示名称空间名称。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

例如,我们有以下文件夹:

Views Articles Index.cshtml Shared SomeOtherFolder

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

在“共享的文章”文件夹中具有DisplayTemplates(带有块模板)文件夹。

希望这会有所帮助