【问题标题】:Umbraco Page types programmatically(Just like in Episerver)Umbraco 页面类型以编程方式(就像在 Episerver 中一样)
【发布时间】:2017-08-14 11:32:15
【问题描述】:

我刚开始在自己的项目中使用 Umbraco,因为与 Episerver 相比它便宜。来自强类型页面/块类型的 Episerver 范式并以编程方式完成所有工作,我现在发现很难以我希望的方式进入 Umbraco。

我知道如何创建简单的应用程序,但我希望将我的页面类型定义为具有 Umbraco 然后将其视为页面的属性的类。我的目标是能够创建页面类型的层次结构,其中某些页面从其父页面继承属性等。

如果我有一个ArticleListingPage,我想在它的控制器中列出所有类型的文章页面。例如,如果我有一个ArticleBasePage 具有属性MainBodyHeadingIntroduction,那么我希望这些属性由ArticlePageArticleLongReadPage 继承。每当我想列出这些时,我都想搜索<ArticleBasePage> 类型的页面并循环遍历集合并呈现这些。我不喜欢在 UI 中工作,我只想像在 Episerver 中那样创建类的层次结构(即页面)。

有没有办法做到这一点?或者可能是指南?我不喜欢在 UI 中创建页面的方法,我希望我的页面属于某个类,这样我就可以获得随之而来的好处

【问题讨论】:

    标签: c# .net visual-studio umbraco episerver


    【解决方案1】:

    Umbraco 在管理内容模型方面与当前的 Episerver 版本 (7+) 有很大不同,但您可以实现一些类似的代码优先功能以启用继承。

    您可能想看看uSiteBuilder(作为 NuGet 包提供)。

    更多信息请访问Jon Jones' blog

    【讨论】:

    • 如果您使用的是 v7+(或者实际上是 v4+),请不要使用 uSiteBuilder。 Umbraco v7+ 有一个内置的 ModelsBuilder,可以为你生成一些强类型的类。
    • 啊,很公平,我刚刚看到“强类型”。我过去曾被 uSiteBuilder 咬过,所以我仍然不推荐它,因为它会产生你无法控制或轻松替换的强依赖性。我有几个网站在 v4 上停留了很长时间,因为 uSiteBuilder 在 v6 上无法运行,并且需要永远将其从项目中删除:-s
    • 您可以控制每个文档类型“可见”的位置,例如,如果您有 NewsOverview 文档类型,您可以指定只能在其下创建 NewsItem 文档类型。如果这就是你的意思:-)
    • @JannikAnker 我创建了一个继承自 Vega.USiteBuilder.DocumentTypeBase 的“ArticleBasePage”。之后,我创建了一个继承自 ArticleBasePage 的“ArticlePage”(装饰有 [DocumentType] 属性)。我希望有一个属性来装饰我的 ArticleBasePage,这样它就不会出现在后台的“文档类型”下,但仍将 ArticlePage 显示为文档类型。
    • 呃。不知道 - 是否有必要让 ArticleBasePage 从 DocumentTypeBase 继承?通过后台,您可以将几种 doctype 合并为一个来进行“组合”。然后当然你配置没有人可以使用组合文档类型创建文档。我已经很久没有使用 uSiteBuilder 了:-s
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多