0

在尝试了不同的解决方案之后现在我有了一些关于我的问题的信息:我已经为我的 BlogPost 类型添加了 MediaLibraryPickerField,我正在为我的博客使用另一种布局,我的博客的Layout-url-test.cshtml名称是 test。并且还创建Content-url-test.cshtml,,,布局是好的Fields.MediaLibraryPicker.Summary-url-test.cshtmlParts.Blogs.BlogPost.List-url-test.cshtml我的带有图像的博客文章正在显示媒体,但是当我添加备用文件时Parts.Blogs.BlogPost.List-url-test.cshtml,博客文章列表和博客文章详细信息中没有显示图像!我意识到我的备用文件有些问题,但我找不到任何能完全解决我的问题的东西!!!

 var list = Model.ContentItems;
 var items = list.Items;
 var body = "";
 string name = string.Empty;
foreach(var post in items)
{

var blogPost = post.ContentItem;

 body = post.ContentItem.BodyPart.Text;

var field =(MediaLibraryPickerField) post.ContentField;
     name  =  field.DisplayName;

}

我可以获得正文部分的文本,但字段始终为空!

我应该在主题placement.info 文件中添加一些代码行吗???

4

1 回答 1

0

如果您尝试为您的博客文章添加 MediaLibraryPickerField,则无需覆盖 Fields.MediaLibraryPicker 等其他视图。您需要的是覆盖:

内容-BlogPost.Detail.cshtml

Parts.Blogs.BlogPost.List.cshtml

但是要列出 BlogPost.List 中的所有帖子,只需遍历内容并像这样选择 ImageField

 @foreach (var item in Model.ContentItems)
{

var mediaPart = ((Orchard.MediaLibrary.Fields.MediaLibraryPickerField)
item.ContentItem.BlogPost.[FieldName]).MediaParts.FirstOrDefault();

  ////////your mark up goes here 

<img src="@mediaPart.MediaUrl" alt="@mediaPart.Caption"/>
...
...

}

你的位置:

 <Match ContentType="BlogPost">
    <!--<Match DisplayType="Summary">-->
     <Place Fields_MediaLibraryPicker="-"/>
     <Place Parts_Common_Body_Summary="Summary:0"
            Parts_Common_Body="Body:0"
            Parts_Tags_ShowTags="Tags:0"
            Parts_Common_Metadata_Summary="MetadataSummary:0"
            Parts_ListOfComments="Comment:0" 
            Parts_Comments_Count="CommentsCount:0" 
            Parts_CommentForm= "CommentForm:0"/>
    <!--</Match>-->


<!--<Match DisplayType="Detail">
      <Place Parts_Tags_ShowTags="Content:before.1"/>
      <Place Parts_Common_Metadata="Content:before.2"/>
      <Place Parts_Comments="Content:after.3"/>
    </Match>--> 


  </Match>

      </Match>
于 2015-06-15T08:09:04.170 回答