2011-04-26 43 views
0

我正在爲我的公司編寫一個內部API,允許用戶傳遞SharePoint CAML查詢。 在我的功能,我採取用戶的查詢,並添加一些額外的元素,然後使用最終查詢從SharePoint檢索所需的數據。SharePoint:驗證SPQuery

例子:

用戶通過在:

<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

你很勇敢。作爲開發人員,我不喜歡在不使用U2U CAML查詢生成器的情況下編寫CAML。我只能想象用戶嘗試寫入原始CAML的結果。 [不寒而慄] – 2011-04-27 12:28:07

回答

2

如果您打算允許的查詢受到相當的限制,那麼構建一個模式以表示什麼是有效查詢可能是一個好方法。然後,您可以根據該模式查看它們的xml是否有效。另外,我知道你可以使用代碼中的CAML Builder dll。我找不到這個例子,但是可能有一種方法可以在try/catch塊中使用它的CAML構建方法來停止無效查詢。

此外,我發現您可能需要注意CAML查詢的FieldRef需要使用可能與顯示名稱不同的字段的內部名稱來構建的事實。