2012-07-30 1 views
5

MediaPickerFieldsはまだ私を逃してしまいます。Orchard CMSはMigrations.csで定義されたMediaPickerFieldで動作します

私は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> 

任意のアイデア?ここで

+1

いくつかの掘削の後、私は解決策を持っています。すぐに投稿します。 – chrisriesgo

答えて

4

は、ソリューションです:

私のディスプレイドライバの方法では、私はContentShapeを構築するときに、私のImageContentPartpart)を通過するようにしてください:

return ContentShape("Parts_ImageContent",() => 
      shapeHelper.Parts_ImageContent(
       Content: part)); 

その後、私のテンプレートビューでは、私が活用します私のMediaPickerFieldを消費するオーチャードのアーキテクチャの動的な性質。これを行うには、部品の.ContentItemプロパティにアクセスし、ダイナミクスに頼り、部品名(.ImageContentPart)とフィールド名(.ImageContent)をチェーンしてフィールドにアクセスします。あなたは同様の問題つまずく場合

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

うまくいけば、これはアウトするのに役立ちます:

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

はここ\\Orchard.Fields\Views\Fields\MediaPicker.cshtmlからMediaPickerFieldプロパティの完全なリストです!

関連する問題