5

MediaPickerFieldsはまだ私を避けています。

Migrations.csで新しいパーツを定義し、次のようにパーツにBoolean列とaを追加しました。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、ディメンション、代替テキスト、クラスなど)からデータを取得するにはどうすればよいですか?

すなわち--Parts.ImageContent.cshtml(私はこのようなことを達成したい):

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

何か案は?

4

1 に答える 1

4

解決策は次のとおりです。

私のDisplayDriverメソッドでは、:を作成するときに必ずImageContentPartpart)を渡します。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 に答える