5

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")));

假设我有ImageContentPartImageContentPartRecord,如何从驱动程序和部件模板(编辑/显示)中的 MediaPickerField(url、尺寸、替代文本、类等)检索数据?

即 - Parts.ImageContent.cshtml (我想完成这样的事情):

<div>
     <img src="@Model.ImageField.Url" alt="@Model.ImageField.Alt" />
</div>

有任何想法吗?

4

1 回答 1

4

这是解决方案:

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

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)" />

以下是 MediaPickerField 属性的详尽列表\\Orchard.Fields\Views\Fields\MediaPicker.cshtml

@* 
    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)" />
*@

希望,如果您偶然发现类似的问题,这将有所帮助!

于 2012-07-30T23:17:21.087 回答