添加内容类型的新实例时如何显示内容部分的字段?

How to display fields of a content part when we add a new instance of a content type?

我正在尝试创建一个自定义模块,其中包含一个内容类型 (Project),其中包含一个内容部分 (ProjectPart)。项目将由管理员创建。目标是在特定页面上显示这些创建的项目。

当我尝试在管理菜单上实例化一个新项目时,我只看到一个字段(描述)。其他字段未显示。

我关注 the steps (starting from PersonPart.cs) in "Lombiq.TrainingDemo" project,并设法创建了一个自定义模块,其中包括一个内容类型 (Project)、一个内容部分 (ProjectPart)。项目中的评论声称我们可以创建一个包含所有字段的瞬间。但我的情况并非如此。

这是我的代码:

https://gist.github.com/vogucore/efb0096e349591c235103e4f3f9e60d1

Here you can see what I exactly mean.

我希望看到并编辑它的所有字段,但只显示 "Description" 字段。

请问是不是我遗漏了什么,或者项目中的解释不正确?

提前致谢。和平! (;

您似乎混淆了内容部分的属性和内容部分的字段,这在 Orchard 中是两个不同的概念。

部件是可以具有常规 C# 属性的常规 C# 对象。使用这样的属性是开发者在 Orchard 中扩展 CMS 和构建自定义部件的有效和主流方式。

字段是更小的内容单元(通常是单个字符串、数字或图像等),可以动态 添加到部分、槽代码或通过管理员的内容类型定义编辑器。它们的优点是站点管理员可以在运行时添加、删除和修改它们。

您混淆它们是可以理解的:它们都是 name/value 您可以附加到零件上的东西。就实际使用而言,在两者之间进行选择的一个好方法是提出以下问题:

这是一个核心属性,它与我正在构建的部分概念紧密相关,或者如果对他们有意义的话,管理员可以附加到它吗?

例如,如果我构建一个商业产品部件,那么 SKU 和价格将是部件属性是有意义的。现在产品照片不同,不是所有的产品都一定有照片,有些可能有好几张,可能是视频,谁知道呢?使产品成为产品的并不是内在的 属性。因此,将其设为一个字段(具体来说是一个媒体选择器字段)。

回到您的具体示例,您不应该在迁移中添加该字段:它基本上是在创建看起来像是您的 Description 属性,但实际上是 Description 字段,除了您的 属性 同名。

您的零件属性没有出现在您的编辑器中的原因是您还没有完成您的零件。您仍然需要 build a driver, and views(该字段不需要它,因为它们已经由建造该字段的人构建)。

附带说明一下,我认为优秀的 Lombiq 人员通过给 Biography 属性 TextField 类型做出了糟糕的选择。这非常令人困惑,在我看来应该是一个字符串,你的 Description 属性.

也应该是一个字符串