0

我已经实现了 List.cshtml 来为图片库提供自定义显示。这是我第一次尝试用模板覆盖投影,起初它似乎工作正常。然后我注意到,当我尝试访问后端 Orchard 1.7 上的 Projection 时,会出现以下问题:

RuntimeBinderException“Orchard.ContentManagement.ContentItem”不包含“TagsPart”的定义

以下是模板 List.cshtml 中的一些代码:

List<TagRecord> uniqueTags = new List<TagRecord>();
List<dynamic> items = Model.Items;

if (items != null && items.Any())
{
    foreach (var item in items)
    {
        if (item != null && item.ContentItem != null)
        {
            TagsPart part = item.ContentItem.TagsPart;
            if (part != null && part.CurrentTags != null)
            {
                foreach (var t in part.CurrentTags)
                {
                    if (!uniqueTags.Contains(t))
                    {
                        uniqueTags.Add(t);
                    }
                }
            }
        }
    }

我对几点一无所知,我怀疑这可能导致错误:

  1. 如何为投影指定模板(比“List.cshtml”更具体)。我可以使用 Placement.info 吗?如何?

  2. 我应该如何测试 ContentItem 中是否存在特定部分?只需分配TagsPart part = item.ContentItem.TagsPart;就会引发上述异常。

更新:我已将其作为模块实现;也就是说,List.cshtml 位于一个简单模块的 Views 文件夹中。如果我将 List.cshtml 移动到主题,那么问题就会消失。但是,我仍然更喜欢使用模块,以便布局独立于主题。

4

2 回答 2

1

Orchard 1.7 包含一个名为“Shape”的新查询布局提供程序。我只是使用了这个提供程序,给它一个形状类型为“LightboxIsotope”,并创建了一个名为“LightboxIsotope.cshtml”的视图。

于 2013-08-16T00:27:09.737 回答
0

在投影中,您可以自定义为列表中的每个属性呈现的 html。为了完成这个,你需要去你的查询,添加一个新的布局,选择你需要的属性,然后设置你想要的一切。

如果查询模块中提供的布局不能满足您的要求,您总是可以创建自己的布局提供程序,这篇博文显示了一个示例:

http://www.stevetaylor.me.uk/image-carousel-using-twitter-bootstrap-and-orchard-cms-projections

于 2013-08-07T12:55:28.253 回答