Umbraco: невозможно связать исходный тип контента ArticleItem с модельным типом контента ArticlesMain - PullRequest
0 голосов
/ 06 июля 2018

Впервые мы попробовали Umbraco, и мы следуем официальному руководству по созданию функциональности Arcticle / News в качестве примера.

Мы в основном начинали сверху здесь

Итак, сначала мы создали домашнюю страницу и, следовательно, мастер-страницу, и все, что между ними, пока не достигнем этой точки.

И все отображаемое работает, у нас есть обзор, Macro / Partial View работает отлично.

Но когда мы хотим перейти к фактическому ArticleItem, мы сталкиваемся с ошибкой, упомянутой в заголовке.

Невозможно привязать исходный тип контента Umbraco.Web.PublishedContentModels.ArticlesItem к моделируемого типа контента Umbraco.Web.PublishedContentModels.ArticlesMain. Модели представлений и контента - PureLive, с одинаковой версией. Приложение находится в нестабильном состоянии и должно быть перезапущено.

Теперь, я предполагаю, что это проблема с главной страницей, являющейся шаблоном ArticlesMain, и это заставляет эту модель использоваться / передаваться на страницы ArticlesItem. Но мой MVC довольно ржавый, поэтому, похоже, я не могу сам найти решение в данный момент.

Используемый код скопирован из учебника 1: 1, чтобы убедиться, что мы ничего не испортили, но пока нет игральных костей. Мы также все делали в Umbraco CMS, наша IDE (VS) не использовалась.

/ Views / ArticlesMain.cshtml

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
<ContentModels.ArticlesMain>
  @using ContentModels = Umbraco.Web.PublishedContentModels; @{ Layout = "HomePage.cshtml"; }
  <div id="main-container">
    <div id="main" class="wrapper clearfix">
      <section>
        <h2>@Umbraco.Field("articlesTitle")</h2>
        <p>@Umbraco.Field("articlesBodyText")</p>
        <p>@Umbraco.RenderMacro("listArticles")</p>
      </section>
    </div>
    <!-- #main -->
  </div>
  <!-- #main-container -->

/ Views / ArticlesItem.cshtml

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
<ContentModels.ArticlesItem>
  @using ContentModels = Umbraco.Web.PublishedContentModels; @{ Layout = "ArticlesMain.cshtml"; }

  <h1>@Umbraco.Field("articlesTitle")</h1>
  <article>
    <h2>@Umbraco.Field("createDate")</h2>
    <p>@Umbraco.Field("articleContents")</p>
  </article>

/ Views / MacroPartials / listArticles.cshtml

@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{ 
    var selection = CurrentPage.Children.Where("Visible").OrderBy("CreateDate desc"); 
    @* OrderBy() takes the property to sort by and optionally order desc/asc *@
}

@foreach (var item in selection)
{
    <div class="article">
        <div class="articletitle"><a href="@item.Url">@item.Name</a></div>
        <div class="articlepreview">@Umbraco.Truncate(@item.ArticleContents,100) <a href="@item.Url">Read More..</a></div>
    </div>
    <hr/>
}

Что касается типов документов, они выглядят точно так же, как на скриншотах из учебника, я, конечно, мог бы предоставить и их, включая установленные разрешения.

1 Ответ

0 голосов
/ 10 июля 2018

Мне помогли официальные форумы Umbraco, оказалось, что я совершил простую ошибку.

Если кто-нибудь когда-нибудь наткнется на этот вопрос, я просто оставлю это здесь:

это вызвано тем, что модель, используемая в представлении, имеет неправильный тип. Вы использовали Layout = "ArticleMain.cshtml" в своем представлении для ArticleDetails, что заставляет ArticleMain.cshtml использоваться в качестве родительского представления. Для этого представления требуется модель типа ArticleMain. Переключение на «Layout = Master.cshtml» должно решить проблему. По крайней мере, это кажется основным представлением в руководстве.

Комментарий форума Umbraco

...