爲什麼無字段的ContentPart不包含在ContentItem中?爲什麼ContentPart不在ContentItem中?
這裏是代碼Migrations.cs:
SchemaBuilder.CreateTable("ImageDescribedPartRecord",
table => table.ContentPartRecord());
ContentDefinitionManager.AlterPartDefinition(
"ImageDescribedPart",
cpd => cpd.WithField(
"Image",
b => b
.OfType("MediaPickerField")
.WithSetting("MediaPickerFieldSettings.Required", "false")));
ContentDefinitionManager.AlterTypeDefinition(
"PlantPicture",
cfg => cfg
.WithPart("ImageDescribedPart")
.WithPart("CommonPart", p => p.WithSetting("OwnerEditorSettings.ShowOwnerEditor", "false"))
.WithPart("BodyPart")
.WithPart("TitlePart")
.WithPart("AutoroutePart"
, builder =>
builder
.WithSetting("AutorouteSettings.AllowCustomPattern", "false")
.WithSetting("AutorouteSettings.AutomaticAdjustmentOnEdit", "true")
.WithSetting("AutorouteSettings.PatternDefinitions", "[{Name:'Container', Pattern: '{Content.Container.Path}/images/{Content.Slug}', Description: 'apgii/taxon/sub-taxon/images/title'}]")
.WithSetting("AutorouteSettings.DefaultPatternIndex", "0"))
.WithPart("ContainablePart")
.Creatable(true)
// todo: The following doesn't work. Make it work.
.WithSetting("BodyPartSettings.FlavorDefault", "text")
);
這裏是爲ContentPart代碼:
public class ImageDescribedPart : ContentPart<ImageDescribedPartRecord>{
}
public class ImageDescribedPartRecord :ContentPartRecord {}
從駕駛員
IContentQuery<ContentItem> query = _contentManager
.Query(VersionOptions.Published)
.Join<CommonPartRecord>()
.Where(cr => cr.Container.Id == container.Id);
var items = query.Slice(0, 10).ToList();
IEnumerable<Zulatm.WebPlants.Models.ImageDescribedPart> firstImages = items.AsPart<ImageDescribedPart>();
Logger.Debug("Items count: {0}", items.Count());
for (int i = 0; i < items.Count(); i++) {
Logger.Debug("Item {0}: {1}", i, items[i].As<TitlePart>().Title);
}
Logger.Debug("Images count: {0}",firstImages.Count());
下面的代碼返回以下
2012-12-07 16:28:45,616 [35] TaxonomyNodePartDriver - Items count: 2
2012-12-07 16:28:45,617 [35] TaxonomyNodePartDriver - Item 0: Test
2012-12-07 16:28:45,619 [35] TaxonomyNodePartDriver - Item 1: test img 2
2012-12-07 16:28:45,619 [35] TaxonomyNodePartDriver - Images count: 0
這對於投射到零件是有效的。查看方法ContentExtension.AsPart(此IEnumerable 項目)。另外一部分不需要驅動程序來查詢它。它需要一個正確的過濾器。請參閱下面的答案。 –
Artyom
你是對的,我已經監督那個項目是複數那裏。我對這種混亂表示抱歉。 但是我對你的問題的答案仍然是正確的:我已經談到了「鑄造」(As <>()方法),是的,如果你像你一樣附加遷移部分,你確實需要一個驅動程序已經呈現。因此,即使您找到了其他解決方案,我的答案也是正確的。我不明白你爲什麼投票棄權。 – Piedone
@Piedone是對的 - 最初你只是在遷移中描述過的部分。在這種情況下,這個答案完全沒問題 - 有一位司機失蹤了。你採取了一種不同的方法,好吧,但這不是降低有效答案的理由。另外,請記住,使用「ActivatingFilter」時,您將無法從管理界面刪除該部分。 –