SharePoint:验证SPQuery

时间:2011-04-26 23:58:31

标签: sharepoint sharepoint-2010 caml spquery

我正在为我的公司编写一个内部API,允许用户传入SharePoint CAML查询。 在我的函数中,我接受用户的查询,并向其添加一些其他元素,然后使用最终查询从SharePoint检索所需的数据。

示例:

用户传入:

<Query>
   <Where>
      <Eq>
         <FieldRef Name='Category' />
         <Value Type='Choice'>Bug</Value>
      </Eq>
   </Where>
</Query>

在内部,我将查询修改为:

<Query>
   <Where>
      <And>
         <Eq>
            <FieldRef Name='Category' />
            <Value Type='Choice'>Bug</Value>
         </Eq>
         <Eq>
            <FieldRef Name='AssignedTo' />
            <Value Type='Integer'><UserID /></Value>
         </Eq>
      </And>
   </Where>
</Query>

您认为验证用户发送的查询的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

如果您要允许的查询受到相当限制,那么构建模式以表示有效查询的内容可能是一种很好的方法。然后你可以根据该模式查看他们的xml是否有效。另外,我知道你可以从代码中使用CAML Builder dll。我无法立即找到这样的示例,但可能有一种方法可以在try / catch块中使用它的CAML构建方法来阻止无效的查询构建。

此外,我可能需要注意CAML查询的FieldRef需要使用可能与显示名称不同的字段的内部名称构建的事实。