Orchardcms Orchard CMS使用Migrations.cs中定义的MediaPickerField

Orchardcms Orchard CMS使用Migrations.cs中定义的MediaPickerField,orchardcms,Orchardcms,MediaPickerFields仍然没有找到我 我在Migrations.cs中定义了一个新部件,并在部件中添加了Boolean列和MediaPickerField,如下所示: SchemaBuilder.CreateTable("ImageContentPartRecord", table => table.ContentPartRecord() .Column("DisplayImage", DbType.Boolean)); Con

MediaPickerFields仍然没有找到我

我在Migrations.cs中定义了一个新部件,并在部件中添加了
Boolean
列和
MediaPickerField
,如下所示:

SchemaBuilder.CreateTable("ImageContentPartRecord", table =>
            table.ContentPartRecord()
            .Column("DisplayImage", DbType.Boolean));

ContentDefinitionManager.AlterPartDefinition("ImageContentPart", builder =>
            builder
                .Attachable()
                .WithField("ImageField", fld =>
                    fld.OfType("MediaPickerField")
                    .WithDisplayName("Image")));
假设我有
ImageContentPart
ImageContentPartRecord
类,我如何从驱动程序和零件模板(编辑/显示)中的MediaPickerField(url、尺寸、alt文本、类等)检索数据

i、 e.-Parts.ImageContent.cshtml(我想实现如下目标):


有什么想法吗?

以下是解决方案:

在我的显示驱动程序方法中,我确保在构建
ContentShape
时传递我的
ImageContentPart
part
):

return ContentShape("Parts_ImageContent", () =>
            shapeHelper.Parts_ImageContent(
                Content: part));
然后在我的模板视图中,我利用Orchard架构的动态特性来使用我的
MediaPickerField
。为此,您可以访问零件上的
.ContentItem
属性,然后依靠动力学,将零件名称(
.ImageContentPart
)和字段名称(
.ImageContent
)链接起来以访问字段

@{
    // Attempting to access MediaPickerField named 'ImageContent'
    var image = Model.Content.ContentItem.ImageContentPart.ImageContent;

    // Leaning on Orchard dynamics to access properties of the field
    var url = image.Url;
}

<img src="@url" alt="@T(image.AlternateText)" />

希望,如果您遇到类似的问题,这将有所帮助

经过一番挖掘,我找到了解决办法。我很快就会寄出去的。
@{
    // Attempting to access MediaPickerField named 'ImageContent'
    var image = Model.Content.ContentItem.ImageContentPart.ImageContent;

    // Leaning on Orchard dynamics to access properties of the field
    var url = image.Url;
}

<img src="@url" alt="@T(image.AlternateText)" />
@* 
    Alternate Text: @Model.ContentField.AlternateText
    Class: @Model.ContentField.Class
    Style: @Model.ContentField.Style
    Alignment: @Model.ContentField.Alignment
    Width: @Model.ContentField.Width
    Height: @Model.ContentField.Height
    Url: @Model.ContentField.Url


    You can also display an image using this example, and add the attributes you need:
    <img src="@Href(Model.ContentField.Url)" />
*@