Что на самом деле Attachable здесь делает? - PullRequest
3 голосов
/ 29 марта 2012

Этот фрагмент кода из учебника Сипке (кстати, это здорово) меня немного смутил. В своем уроке он говорит, что .Attachable позволяет добавлять части контента в типы контента. Но во фрагменте кода ниже часть содержимого объявлена ​​как .Attachable (false) и все еще добавляется в тип содержимого. Таким образом, должны быть некоторые другие критерии, которые я не понимаю. Так в чем же разница между CustomerPart и AddressPart с точки зрения Attachable?

        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 голосов
/ 30 марта 2012

IIRC часть содержимого всегда может быть присоединена к типу (например, через ActivatingFilter<> или путем указания этого в ваших миграциях), однако только части, отмеченные как Attachable(), будут отображаться при создании типов содержимого в панели администратора. Поэтому я думаю, что в этом случае CustomerPart появится при выборе частей контента для типа контента при построении через панель мониторинга, тогда как AddressPart не появится.

Редактировать: Я только что готов, хотя некоторые из прохождения, и я думаю, что причина этого в том, что AddressPart только прикреплен к элементу контента Address. Между клиентами и адресами существует связь один-ко-многим, и нет смысла позволять пользователю прикреплять AddressPart к другим типам контента, поэтому AddressPart скрыт от пользователей, но все еще присоединяем. к элементам контента из миграции.

...