Показывать содержание поста в пираньях cms - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь отобразить содержимое страницы, поскольку использованный файл был сохранен в части менеджера.

На мой взгляд, у меня есть следующий код:

@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 голосов
/ 22 марта 2019

Нашли решение: Чтобы использовать @ Html.DisplayFor (m => m.Blocks), необходимо иметь шаблоны отображения для используемых блоков либо в папке «Общие представления», либо в качестве подпапки внутри папки, в которой вы используете @ Html.DisplayFor ( m => m.Blocks).

Например, у нас есть следующие папки:

Views Articles Index.cshtml Shared SomeOtherFolder

Возможные решения для использования @ Html.DisplayFor (m => m.Blocks) в файле Index.cshtml внутри папки Articles:

Наличие папки DisplayTemplates (с шаблонами блоков) внутри папки Articles of Shared.

Надеюсь, это поможет

...