【发布时间】:2012-09-18 07:00:06
【问题描述】:
我们正在将 VBScript 模板转换为 .net 复合模板,并且在使用 Broker Query Mechanism 时遇到了一些问题。
我们的旧代码如下所示:
sQuery = "query" & nNumber & ".AddCriteria(""schema"",""="", ""1132"");"& vbcrlf
if objFields.Item("FilterBD").Value.Count >0 Then
if objFields.Item("FilterBD").Value(1) = "Yes" Then
sQuery = sQuery & "query" & nNumber & ".AddOperator(Query.QueryOperator.AND_Field);"& vbcrlf
sQuery = sQuery & "query" & nNumber & ".AddCriteria(""categorization"", ""="", ""Broker_Dealer/test"");" & vbcrlf
End If
End If
在将其转换为 .net 时,我们在项目中添加了 Tridion.ContentDelivery.DynamicContent dll 的引用,以便我们可以将代码(示例)编写为:
using Tridion.ContentDelivery.DynamicContent.Query;
Tridion.ContentDelivery.DynamicContent.Query.Query query = new Tridion.ContentDelivery.DynamicContent.Query.Query();
ItemSchemaCriteria isArticle = new ItemSchemaCriteria(1132);
CategoryCriteria bdCategory = new CategoryCriteria("Broker_Dealer/\" + \"test\"");
Criteria bdCriteria = CriteriaFactory.And(isArticle, bdCategory);
query.Criteria = bdCriteria;
到目前为止,这种方法在 Visual Studio 中运行良好,但在模板生成器中构建 CT 时,我们收到错误“无法加载文件或程序集‘无法加载文件或程序集’Tridion.ContentDelivery.Interop,版本=6.1.0.43, Culture=neutral, PublicKeyToken=ddfc895746e5ee6b' 或其依赖项之一。系统找不到指定的文件。'
关注these Steps of registering the dlls in GAC后,还是遇到同样的问题?
我们错过了什么?请帮忙。 谢谢。
【问题讨论】:
-
您是否将 Tridion.ContentDelivery.Interop.dll 放入您的 Web 应用程序的 bin 文件夹中?
-
您是否在 CT 的 .Net TBB 中使用此命名空间?如果是这样,那么您在错误的地方使用它。 Tridion.ContentDelivery.DynamicContent 是一个内容交付命名空间(名称中的线索),不应直接在模板中使用。
-
您好 Quirijn:是的,该文件已经存在于 Bin 文件夹中。 @Jeremy:还有其他选择吗?我需要使用查询类(可以在我的帖子中看到)。如何在我的模板中使用查询类?
-
@HustonLopes 在模板代码中使用查询类没有意义。我希望您了解 Query 类是从内容交付系统获取数据,并且在发布期间在 CMS 系统上工作的模板代码。无论如何你想达到什么目标?
-
@vikaskumar :是的,我在我的模板中的 StringBuilder 中将代码作为字符串传递。但出于测试目的,我已将查询代码添加到我的模板中,以便我可以轻松构建我的字符串。
标签: tridion tridion-2011 tridion-content-delivery