我有一个页面,它使用分层查看器,内容过滤器可以过滤两种页面类型,一种是容器,另一种是叶子页面。容器页面类型没有字段,页面确实有几个字段。在分层查看器/内容过滤器/列中,我明确列出了几个要返回的列,因为这有助于提高性能。
我们正在从Kentico 8.2升级到Kentico 9.在8.2站点中,此页面正常运行。在9网站中,它现在抛出一个例外,说“"无效的列名称"”。如果我删除列列表(允许Kentico默认返回所有列),它会再次起作用。性能的提升并不是很明显,所以这是一个可行的选择。但是,我想知道为什么现在在Kentico 9中没有工作。
似乎在返回所有列时,默认情况下,如果某个列在页面类型上不可用,Kentico会生成SELECT null as MissingColumnName
,但在明确列出要返回的列时,它会生成{{1 }}。我不知道这是Kentico 8.2和9之间的变化,还是在升级过程中发生了变化。
答案 0 :(得分:2)
在第9版之前,Kentico为每种页面类型创建了特定的视图。在查询中使用这些视图来检索页面信息。视图将节点,文档和自定义页面类型信息合并到一个查询中。在v9中,这些视图被删除,并添加了一个通用视图,它只将节点和文档信息连接在一起,然后动态添加自定义页面类型信息。
所以简短的回答是页面的API发生了显着变化以及如何检索数据,因此这是一个预期的重大变化。您的解决方案不是最佳解决方案,因为它返回所有列。但这将是快速,简单的解决方案。我建议在webpart上添加一些缓存,这将有助于提高性能,这就是我们在v9和更新的站点中对此类情况所做的。