Umbraco:无法将源内容类型 ArticleItem 绑定到模型内容类型 ArticlesMain

Spr*_*ite 1 html asp.net-mvc model umbraco

这是我们第一次尝试 Umbraco,我们正在按照官方教程创建 Arcticle/新闻功能作为示例。

我们基本上从这里开始

因此,首先我们创建了一个主页和一个母版页,以及介于两者之间的所有内容,直到我们到达一点。

显示的所有内容都有效,我们有一个概述,宏观/部分视图运行良好。

但是当我们想要导航到实际的 ArticleItem 时,我们遇到了标题中提到的错误。

无法将源内容类型 Umbraco.Web.PublishedContentModels.ArticlesItem 绑定到模型内容类型 Umbraco.Web.PublishedContentModels.ArticlesMain。视图模型和内容模型都是 PureLive,版本相同。该应用程序处于不稳定状态,应重新启动。

现在,我的猜测是 Masterpage 作为 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 -->
Run Code Online (Sandbox Code Playgroud)

/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>
Run Code Online (Sandbox Code Playgroud)

/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/>
}
Run Code Online (Sandbox Code Playgroud)

至于文档类型,它们看起来与教程的屏幕截图中完全相同,我当然也可以提供这些,包括设置的权限。

Spr*_*ite 5

我从 Umbraco 官方论坛得到了一些帮助,结果证明我确实犯了一个简单的错误。

如果有人偶然发现这个问题,我会把它留在这里:

这是由于视图中使用的模型类型不正确造成的。您在 ArticleDetails 视图中使用了 Layout = "ArticleMain.cshtml",这导致 ArticleMain.cshtml 被用作父视图。该视图需要一个 ArticleMain 类型的模型。切换到“Layout=Master.cshtml”应该可以解决问题。至少这似乎是教程中的主视图。

Umbraco 论坛评论