我是Orchard的新手(对我来说很陌生),当我的博客显示Parts.Blogs.BlogPost.List.cshtml
时,我正在尝试编辑页面。我在内容下转到了ContentItems
,并在我的BlogPosts中添加了一个名为MediaPicker Field
的{{1}},我还在我的主题中替换了BlogPostImage
(这是我的文件'编辑。我在那里的代码是:
Parts.Blogs.BlogPost.List.cshtml
但我无法弄清楚世界上如何将这个mediapicker字段调用到我的列表中。我尝试的任何方式都会返回空白,并在href中显示某种查询字符串。像“?23423455657”之类的东西。我取消了变量,查询字符串仍然显示出来。我基本上要完成的是将这些放入幻灯片中,使用jquery在@using Orchard.ContentManagement;
@{
IEnumerable<object> blogPosts =
Model.ContentItems;
}
@if (blogPosts == null || blogPosts.Count() < 1)
{
<p>@T("No posts.")</p>
}
else
{
int count = 0;
<div id="Blog">
<div id="slides">
<div class="slides_container">
@foreach (dynamic post in blogPosts)
{
count++;
string title = post.ContentItem.TitlePart.Title;
ContentItem item = post.ContentItem;
string text = post.ContentItem.BodyPart.Text;
string postImageUrl = post.BlogPostImage.Url;
<div class="slide">
<a href="@Url.ItemDisplayUrl(item)"><img src="@postImageUrl" width="625" height="400" alt="Slide @count.ToString()"></a>
<div class="caption" style="bottom: 0">
<h4><a href="@Url.ItemDisplayUrl(item)">@title</a></h4>
</div>
</div>
}
</div>
</div>
</div>
}
中开始幻灯片放映。 TIA
// SOLUTION:
经过几天的阅读和研究,我终于找到了一个有效的解决方案。
更换:
layout.cshtml
使用:
string postImageUrl = post.BlogPostImage.Url;
从这里得到它:http://blog.cloudconstruct.com/post/Creating-a-rotating-image-gallery-in-Orchard-CMS.aspx
我希望它可以帮助任何人陷入同一条船。我仍然很好奇为什么我不能简单地按照我的方式调用它,但它现在正在工作! :)
答案 0 :(得分:1)
您可以使用动态获取图片网址:
dynamic postItem = post.ContentItem;
var postImageUrl = (string)postItem.BlogPost.BlogPostImage.Url;
内容项在用作动态对象时会公开其所有部分(这里我们使用的部分与该类型具有相同的名称,以及在从管理员添加字段时添加字段的位置)。该部分本身具有每个字段的动态成员(此处为BlogPostImage),从那里您可以访问该字段的属性(此处为Url)。
答案 1 :(得分:0)
我尝试使用版本1.7的上述答案,没有任何乐趣。我最终不得不下载源代码的副本,以便我可以深入研究这些对象。下面的代码为我提供了我需要的信息,并且在将来向其他内容添加额外字段时也会有所帮助。我使用上面的部分答案来解决我的问题...
IEnumerable<object> blogPosts = Model.ContentItems.ContentItems;
foreach (dynamic post in blogPosts) {
dynamic q = ((ContentItem)post.ContentItem).Parts.SelectMany(p => p.Fields).Where(f => f.Name == "BlogPostImage").First();
string postImageUrl = q.MediaParts[0].MediaUrl;
<img src="@postImageUrl" />
}
希望这有助于某人。