【问题标题】:Custom View For RecentBlogPosts in OrchardOrchard 中最近博客帖子的自定义视图
【发布时间】:2011-07-27 17:39:13
【问题描述】:

我已经搜索并尝试了 2 天来更改我主页上显示的最近博客帖子内容类型的视图。我想显示帖子中的标题和短语。

我设法找到了一个显示每个帖子标题的视图,但我还没有设法弄清楚模型中其他部分的名称或如何提取文本。

我们将不胜感激!

@using Orchard.ContentManagement;
@using Orchard.Core.Routable.Models;
@using Contrib.Hyperlink.Fields;
@{


  IEnumerable<object> blogPosts = Model.ContentItems.ContentItems;
}
@if (blogPosts == null || blogPosts.Count() < 1)
{
    <p>@T("No posts.")</p>
}
else
{
   <div class="content-items">
   @foreach (dynamic post in blogPosts)
   {
            string title = post.Title;
            ContentItem item = post.ContentItem;

   <div class="blogpost" style="width: 300px; padding-left: 15px; float: left;">
         <p class="content-item-summary">@Html.ItemDisplayLink(title, item)</p>
   </div>

   }
   </div>
}

以上代码(主要)来自Bertrand Le Royblog,感谢他。

【问题讨论】:

    标签: .net asp.net asp.net-mvc razor orchardcms


    【解决方案1】:

    ContentItem 是一个 BlogPost 内容项,其中包含 BlogPostPart(来自 Orchard.Blogs.Models 命名空间)。所以你可以使用它的任何属性——查看我上面提供的源代码的链接。

    这部分具有 Text 属性,该属性在底层从对应的 BodyPart(也附加了 BlogPost 类型)返回 Html。 顺便说一句 - 记得使用 @Html.Raw(part.Text) 来显示获取的内容。

    还有一件事 - 为了让生活更轻松,我宁愿将迭代的对象转换为 BlogPostPart 以获得 Intellisense:

    @foreach (var post in blogPosts.Select(p => ((IContent)p.ContentItem).As<BlogPostPart>())) 
    { 
        ... 
    }
    

    HTH

    【讨论】:

    • 您好,感谢您的回复。不幸的是,使用上面的 foreach 会导致:code 无法将类型为“IShapeProxy722a7dd4a4ce481a9e164719389c0d7c”的对象转换为类型“Orchard.ContentManagement.IContent”。 code 另外,@Html.Raw(item.BlogPostPart.Text) 是否正确?
    • 啊,我的错 - 我编辑了代码,现在它可以工作了。该部分在 post.ContentItem 属性 ofc:)
    • 不,@Html.Raw(item.BlogPostPart.Text) 不正确。如果你在我上面写的 foreach 循环中使用它,它应该看起来像 @Html.Raw(post.Text)
    • 使用修改后的 foreach 会导致:编译器错误消息:CS1061:“object”不包含“ContentItem”的定义,并且没有接受“object”类型的第一个参数的扩展方法“ContentItem”可以被发现(您是否缺少 using 指令或程序集引用?)
    • 我修改了代码如下,它工作! (非常感谢@Html.Raw(post.Text) @foreach(blogPosts 中的动态帖子){ string title = post.Title; ContentItem item = post.ContentItem; var thething = ((IContent)post.ContentItem ).As();

      @Html.ItemDisplayLink(title, item)

      @Html.Raw(thething.Text )
      }
      }
    【解决方案2】:

    您可能想尝试 Orchard 1.1 中的形状追踪功能(下周到期)。那里的模型选项卡将使您能够深入研究对象并找出显示几乎所有内容的语法。

    【讨论】:

    • 别担心...我正在计算直到发布的日子,并为更多功能祈祷!感谢您的提醒!
    • 形状追踪功能是真正的救星!!!谢谢 !恭喜,我们已经取得了真正的进步。
    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多