来自Sipke's tutorial的这段代码片段(顺便说一句,这很棒)让我有些困惑。在他的教程中,他说.Attachable允许将内容部分添加到内容类型。但是在代码段中,内容部分下面被声明为.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)
);
答案 0 :(得分:4)
IIRC内容部分始终可以附加到某个类型(例如,通过ActivatingFilter<>
,或在迁移中指定),但只有标记为Attachable()
的部分才会显示在您的正在管理仪表板中构建内容类型。因此,我认为在这种情况下,在通过信息中心构建时为内容类型选择内容部分时会显示CustomerPart
,而AddressPart
则不会出现。
编辑:我已经准备好了一些细节,我认为这是因为AddressPart
仅附加到Address
内容项。客户和地址之间存在一对多关系,并且允许用户将AddressPart
附加到其他内容类型没有意义,因此AddressPart
对用户隐藏,但仍可附加到迁移中的内容项。