Sipke's tutorial的这段代码片段(顺便说一句真棒)使我有些困惑。在他的教程中,他说.Attachable允许将Content Parts添加到Content Types。但是在代码段中,内容部分下方被声明为.Attachable(false),并且仍被添加到内容类型中。因此,肯定还有其他一些我没有意识到的标准。那么,就Attachable而言,CustomerPart和AddressPart之间的真正区别是什么?
ContentDefinitionManager.AlterPartDefinition(typeof(Models.CustomerPart).Name, p => p
.Attachable()
);
ContentDefinitionManager.AlterTypeDefinition("Customer", t => t
.WithPart(typeof(Models.CustomerPart).Name)
.WithPart("UserPart")
);
ContentDefinitionManager.AlterPartDefinition(typeof(Models.AddressPart).Name, p => p
.Attachable(false)
.WithField("Name", f => f.OfType(typeof(TextField).Name))
.WithField("AddressLine1", f => f.OfType(typeof(TextField).Name))
.WithField("AddressLine2", f => f.OfType(typeof(TextField).Name))
.WithField("Zipcode", f => f.OfType(typeof(TextField).Name))
.WithField("City", f => f.OfType(typeof(TextField).Name))
.WithField("Country", f => f.OfType(typeof(TextField).Name))
);
ContentDefinitionManager.AlterTypeDefinition("Address", t => t
.WithPart(typeof(Models.AddressPart).Name)
);
最佳答案
IIRC内容部分始终可以附加到类型(例如,通过ActivatingFilter<>
或通过在迁移中指定),但是当您在管理员中构建内容类型时,只有标记为Attachable()
的部分才会显示仪表板。因此,我认为在这种情况下,通过仪表板进行构建时为内容类型选择内容部分时,会出现CustomerPart
,而不会出现AddressPart
。
编辑:尽管已经通过了一些演练,但我已经准备好了,我认为这样做的原因是因为AddressPart
仅附加到内容项。客户和地址之间存在一对多的关系,并且允许用户将Address
附加到其他内容类型没有任何意义,因此AddressPart
对用户是隐藏的,但仍可附加迁移中的内容项。