Sharepoint Вставка нового элемента с помощью веб-службы списков - PullRequest
1 голос
/ 20 февраля 2012

Я использую sharepoint 2007.

У меня есть список «Пользовательские билеты» с одним столбцом «Контент»

Моя проблема в том, что я пытаюсь вставить следующий текст:

<script type=\"text/javascript\"> </script>

Чтобы избежать исключения, я использовал 'HtmlEncode'

Но sharepoint игнорирует это и просто вставляет пустое значение в столбец «content».

Мой код:

ListsSoapClient _proxy = new ListsSoapClient();

string ContentValue = 
HttpContext.Current.Server.HtmlEncode("<script type=\"text/javascript\"> </script>");

XmlDocument doc = new XmlDocument();

XmlElement batchElement = doc.CreateElement("Batch");

batchElement.InnerXml = "<Method ID=\"1\" Cmd=\"New\"> <Field Name=\"Ticket_x0020_Details\">ContentValue </Field></Method>";

_proxy.UpdateListItems("User Tickets", UtilHelper.GetXElement(batchElement));

Как я могу получить sharepoint для принятия этого значения: <script type=\"text/javascript\"> </script>?

1 Ответ

1 голос
/ 20 февраля 2012

SharePoint имеет своего рода фильтрацию пользовательского контента. Это зависит от столбца, в который вы вставляете. Каков его тип? Если это форматированный текст, SharePoint не разрешит вставку содержимого сценария.

Upd: Идея отфильтровывать скрипты вполне естественна. Представьте, если бы это было разрешено, что произойдет, если вы откроете представление «AllItems.aspx» и все сценарии будут выполнены.

Что вы можете сделать, так это дважды кодировать содержимое, так что <script> в исходном коде становится &amp;lt;script&amp;gt; в вашем поле ContentValue. Таким образом, ваш скрипт будет сохранен в элемент списка в виде текста. Чтобы выполнить его как скрипт, вам всегда нужно будет вызвать HtmlDecode.

...