我目前正在尝试将网站从Orchard 1.6更新为1.8。 在媒体上遇到一些问题 - >媒体库步骤。
我们在Migrations.cs中有这个
SchemaBuilder.CreateTable(typeof(CarouselRecord).Name, table => table
.ContentPartRecord()
.Column<string>("Interval", column => column.WithDefault(""))
.Column<string>("MinHeight", column => column.WithDefault(""))
);
ContentDefinitionManager.AlterPartDefinition(
typeof(CarouselPart).Name, cfg => cfg
.WithField("CarouselImage1", fieldBuilder => fieldBuilder.OfType("MediaPickerField").WithDisplayName("Img1"))
.WithField("CarouselImage2", fieldBuilder => fieldBuilder.OfType("MediaPickerField").WithDisplayName("Img2"))
.WithField("CarouselImage3", fieldBuilder => fieldBuilder.OfType("MediaPickerField").WithDisplayName("Img3"))
.WithField("CarouselImage4", fieldBuilder => fieldBuilder.OfType("MediaPickerField").WithDisplayName("Img4"))
.Attachable()
);
ContentDefinitionManager.AlterTypeDefinition("CarouselWidget", cfg => cfg
.WithPart(typeof(CarouselPart).Name)
.WithPart("WidgetPart")
.WithPart(typeof(CommonPart).Name)
.WithSetting("Stereotype", "Widget")
);
禁用媒体模块并启用媒体库模块(以及迁移媒体文件和媒体选择器字段)后,此操作完全停止,在.cshtml中的此行崩溃:
<div class="item"><a href="@Model.ContentPart.CarouselImage2.AlternateText"><img src="@(Href(Model.ContentPart.CarouselImage2.Url))" alt="" /></a></div>
首先我尝试更新模板以使用MediaLibraryPickerFields,但没有运气。 事实证明,当我去管理员 - &gt;小部件 - &gt;编辑小部件,小部件的媒体字段消失了。
我是否在更新过程中出错了,或者我是否必须在Migrations.cs中编写新更新以删除MediaPickerField并添加MediaLibraryPickerFields?
答案 0 :(得分:1)
3个月没有回答,以为我会关闭这个。 我最终做的是删除MediaPickerFields
ContentDefinitionManager.AlterPartDefinition(
typeof(CarouselPart).Name, cfg => cfg
.RemoveField("CarouselImage1")
.RemoveField("CarouselImage2")
.RemoveField("CarouselImage3")
.RemoveField("CarouselImage4")
.Attachable()
);
然后添加MediaLibraryPickerField
ContentDefinitionManager.AlterPartDefinition(
typeof(CarouselPart).Name, cfg => cfg
.WithField("CarouselImages", fieldBuilder => fieldBuilder.OfType("MediaLibraryPickerField").WithDisplayName("Images").WithSetting("MediaLibraryPickerFieldSettings.Multiple", "true"))
.Attachable()
);
由于数据丢失而不是最佳,但在这种情况下这不是一个大问题。