新类型上 ContainerPart 的设置

Settings on ContainerPart on new type

我正在尝试在迁移中创建一个新的内容类型,该迁移具有附加了已应用某些设置的 ContainerPart。

ContentDefinitionManager.AlterTypeDefinition("NewType",
    cfg => cfg
        .DisplayedAs("New Type")
        .WithPart(typeof(TitlePart).Name)
        .WithPart(typeof(ContainerPart).Name)
            .WithSetting("ContainerPartSettings.ItemsShownDefault", "False")
        .WithPart(typeof(CommonPart).Name)
        .WithPart(typeof(IdentityPart).Name)
        .Creatable()
        .Listable()
    );

迁移后的 ItemsShownDefault 保持其默认值 True。

我尝试了几种不同的变体:

据我所知,与 AutorouteSettings 等其他方法相比,ContainerSettings 使用不同的方法来存储其值。

查看您的代码,您将设置链接到 type 而不是 part:

.WithPart(typeof(ContainerPart).Name) // close the WithPart function

    // which means the following line is chained to the type
    .WithSetting("ContainerPartSettings.ItemsShownDefault", "False")

要解决这个问题,请这样做:

.WithPart(typeof(ContainerPart).Name, part => part

    // inside the ContainerPart context
    .WithSetting("ContainerPartSettings.ItemsShownDefault", "False")
) // Close ContainerPart context

.WithPart(..)

如果您确实打算在类型而不是零件上设置设置,请使用定义为 here:

ContainerTypePartSettings class
.WithPart(typeof(ContainerPart).Name)

// Set settings on the type instead of the part
.WithSetting("ContainerTypePartSettings.ItemsShownDefault", false)