什么是 Attachable 在这里真正的作用?

3
这段代码片段来自Sipke的教程(顺便说一下,这个教程很棒),让我有点困惑。在他的教程中,他说.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)
            );
1个回答

4
据我所知,内容部分始终可以附加到类型(例如通过ActivatingFilter<>或在迁移中指定),但只有被标记为Attachable()的部分才会在您构建管理仪表板中的内容类型时显示。因此,在通过仪表板构建时选择内容部分时,CustomerPart将出现在内容类型的选项中,而AddressPart将不会出现。
编辑:我刚刚阅读了一些步骤说明,我认为这样做的原因是因为AddressPart仅附加到Address内容项。客户和地址之间存在一对多的关系,允许用户将AddressPart附加到其他内容类型是没有意义的,因此AddressPart对用户隐藏,但仍可从迁移中附加到内容项中。

没错:可附加性是关于在管理员中显示的内容。即使在代码中,一个不可附加的部分也是无用的。 - Bertrand Le Roy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接