从2sxc模块

时间:2016-05-15 09:21:33

标签: dotnetnuke-module 2sxc

  1. 我想用Visual Query设计器创建查询,包括排序,过滤,缓存和多个strams。基本复杂的查询。

  2. 我知道我可以使用QueryString值或In-Value Provider参数化值,也可以在查询中“硬编码”。

  3. 但我的问题是如何从剃刀代码中更改一个或多个这个值

  4. 例如: 如果我像这样加载现有的查询:

    var q = App.Query [“query-name];

    我获得此查询的结果。 但是在这个查询中有一个“硬编码”值,例如:“完成”某些Filter, 我的问题是:

    是否可以将此查询重新用作模板,然后再使用剃刀代码更改 这个硬编码的价值。 像使用QueryString或In-Value标记,但这个值 来自剃刀脚本中的其他一些逻辑。

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题,到目前为止没有人问过:)

让我们看一些基础知识:用于查询的值提供程序是一个包含值提供程序对象的特殊字典。它是在访问时创建的,可以根据需要进行修改,直到您访问查询 - 然后使用包含的属性。

是的:您可以更改现有参数(例如更改QueryString:Id将提供的内容),也可以添加自己的参数列表,例如CodeParams:Size。

要了解如何执行此操作,请查看构建配置提供程序的https://github.com/2sic/2sxc/blob/master/SexyContent/DataSources/ConfigurationProvider.cs。这是在查询之前始终运行的内容。

您应该能够通过

访问和修改字典
  1. 创建自己的应用对象
  2. 创建自己的配置对象
  3. 使用自己的配置对象的应用程序的InitData
  4. 访问查询
  5. 感觉有点复杂,但它相当简单。最好检查app-factory以了解代码: https://github.com/2sic/2sxc/blob/3602461f3c4154857d84c7f6ad1a3d1e96b78ba3/Environment/Dnn7/Factory.cs

    选项2:请注意,还有另一种方式: 您可以获取查询,并对其进行修改,使其不使用参数,而是使用您刚刚提供的值。这可能会让人觉得有点混乱,但是很清楚会发生什么。 基本上,系统是数据源项的链接,通常将源Out [“Default”]连接到In [“Default”]。每个数据源都有不同的类型和不同的属性。

    您可以获取查询数据源,沿对象导航到正确的数据源对象,将其转换为正确的类型,然后将filter / parameter属性更改为您需要的任何内容。这可能需要相当多的摆弄,所以我不推荐它:)。