Orchardcms 如何在Orchard容器中列出项目?
在我的Orchard站点中,有一个名为Product的内容类型。它具有零件容器和可路由性。产品可以包含名为ProductFeature的内容类型 当浏览到路由url时,我已经覆盖了view Content-Product.cshtml以修改html。 在此视图中,如何获取产品包含的所有ProductFeature的列表? 这篇文章展示了如何为博客小部件实现这一点。 我很难找到如何在产品的内容视图中做到这一点。上面示例中的代码抛出一个null异常错误,因此模型结构必须不同。我尝试在VisualStudio中使用形状跟踪或调试查看模型,但找不到包含的项Orchardcms 如何在Orchard容器中列出项目?,orchardcms,Orchardcms,在我的Orchard站点中,有一个名为Product的内容类型。它具有零件容器和可路由性。产品可以包含名为ProductFeature的内容类型 当浏览到路由url时,我已经覆盖了view Content-Product.cshtml以修改html。 在此视图中,如何获取产品包含的所有ProductFeature的列表? 这篇文章展示了如何为博客小部件实现这一点。 我很难找到如何在产品的内容视图中做到这一点。上面示例中的代码抛出一个null异常错误,因此模型结构必须不同。我尝试在VisualS
任何帮助都将不胜感激。如果您确保placement.info包含容器零件,那么您的功能列表应该已经显示出来。我使用两个选项(我知道伯特兰会说它们难看而且没有必要,因为他一直在努力为我们提供许多其他工具,但如果你还没有掌握果园的全部美丽和它的巧妙之处,你就需要这些技巧。) 这里有两个:
Parts.Container.Contained YourContentTypeName.cshtml
内部:
@foreach (var p in Model.List.Items)
{
// regular content parts, Title and Body
string title = p.ContentItem.TitlePart.Title;
string body = p.ContentItem.BodyPart.Text;
// Your custome content parts
string something = p.ContentItem.YourContentPartName.YourContentPartFieldName.Value;
}
var yourList = Model.Content.Items[1].List.Items;
Items[1]
在我的例子中,您可以在列表所在的模型中检查形状跟踪。从这里开始,一切都与1相同)
希望它能帮助那些偶然发现这条线索的人,像我几周前那样寻找这个解决方案。要进一步了解Zoran的答案,如果你不想硬编码项目列表中容器的位置,你可以使用LINQ:
IEnumerable<dynamic> items = Model.Content.Items;
var container = (from item in items
where (item.ContentPart.PartDefinition.Name == "ContainerPart")
select item).ElementAt(0);
我希望能够从顶层视图中的访问包含的项目。有什么方法可以做到这一点吗?您可以在内容管理器中查询CommonPartRecord,其中容器是您的内容项。@BertrandLeRoy您能提供一个您在上面的评论中提到的查询示例吗?这是否可以在包含容器内容部分的内容类型的备用视图中执行?
contentManager.Query()。其中(c=>c.Container.Id==theIdOfYourContainer)。List()
我假设必须在自定义模块的驱动程序中执行此查询。是吗?你知道吗?我正试图做同样的事情,无法理解贝特朗·勒罗伊的答案。
@Display(container.List.Items)