2012-07-30 3 views
5

MediaPickerFields में अभी भी मुझे elude।Orchard सीएमएस MediaPickerField के साथ काम करता है Migrations.cs

मैं 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 text, class, आदि) से?

अर्थात - Parts.ImageContent.cshtml (मैं कुछ इस तरह पूरा करने के लिए चाहते हैं):

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

कोई भी विचार?

+1

कुछ खोदने के बाद, मेरे पास समाधान है। मैं इसे जल्द ही पोस्ट करूंगा। – chrisriesgo

उत्तर

4

यहाँ समाधान है:

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

तब मेरी खाका दृश्य में, मैं लाभ उठाने:

अपना प्रदर्शित चालक विधि में, मैं पारित करने के लिए मेरी ImageContentPart (part) जब निर्माण ContentShape सुनिश्चित करें ऑर्चर्ड के आर्किटेक्चर की गतिशील प्रकृति को मेरे 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)" /> 

यहाँ एक संपूर्ण MediaPickerField संपत्तियों की \\Orchard.Fields\Views\Fields\MediaPicker.cshtml से सूची है!