SharePoint: проверка SPQuery - PullRequest
       33

SharePoint: проверка SPQuery

0 голосов
/ 27 апреля 2011

Я пишу внутренний 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 Ответ

2 голосов
/ 27 апреля 2011

Если запросы, которые вы собираетесь разрешить, довольно ограничены, может быть хорошим подходом является создание схемы, которая бы представляла, каким будет действительный запрос. Тогда вы можете просто увидеть, является ли их XML действительным в соответствии с этой схемой. Кроме того, я знаю, что вы можете использовать DLL CAML Builder из кода. Я не могу найти пример этого сразу, но может быть способ использовать его методы построения CAML в блоке try / catch, чтобы остановить когда-либо неправильные запросы.

Кроме того, мне приходит в голову, что вам, возможно, придется остерегаться того факта, что FieldRef запроса CAML необходимо будет построить с использованием внутреннего имени поля, которое может отличаться от отображаемого имени.

...