Orchardcms 为投影抛出实现List.cshtml';ContentManagement.ContentItem';不包含';塔斯帕特';

Orchardcms 为投影抛出实现List.cshtml';ContentManagement.ContentItem';不包含';塔斯帕特';,orchardcms,Orchardcms,我已经实现了List.cshtml来为图像库提供自定义显示。这是我第一次尝试用模板覆盖投影,一开始看起来效果不错。然后我注意到,当我尝试访问后端Orchard 1.7上的投影时,会出现以下情况: RuntimeBinderException“Orchard.ContentManagement.ContentItem”没有 不包含“TagsPart”的定义 以下是template List.cshtml中的一些代码: List<TagRecord> uniqueTags = new L

我已经实现了List.cshtml来为图像库提供自定义显示。这是我第一次尝试用模板覆盖投影,一开始看起来效果不错。然后我注意到,当我尝试访问后端Orchard 1.7上的投影时,会出现以下情况:

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

以下是template 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);
                    }
                }
            }
        }
    }
List uniqueTags=new List();
列表项=模型项;
if(items!=null&&items.Any())
{
foreach(项目中的var项目)
{
if(item!=null&&item.ContentItem!=null)
{
TagsPart部分=item.ContentItem.TagsPart;
if(part!=null&&part.CurrentTags!=null)
{
foreach(部分.CurrentTags中的var t)
{
如果(!uniqueTags.Contains(t))
{
唯一标签。添加(t);
}
}
}
}
}
我对以下几点一无所知,我怀疑这可能是导致错误的原因:

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

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


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

    在投影中,您可以自定义为主题呈现的html或列表中的每个属性。要完成此操作,您需要转到查询,添加新布局,选择所需的属性,然后设置所需的一切

    如果查询模块中提供的布局不能满足您的要求,您可以创建自己的布局提供程序,本博客文章给出了一个示例:


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

    我在其他项目中使用了这两种技术。但是,对于复杂的HTML来说,使用布局是一种笨拙的限制,而编写布局提供毕竟,这就是模板的用途!