Создайте новую ссылку на документ с использованием SharePoint 2010
-
16-10-2019 - |
Вопрос
Мне нужно добавить новую ссылку документа в библиотеку документов, используя модель объекта клиента. Я подозреваю, что мог скопировать формат файла .aspx, используемый в элементах «Ссылка на документ», и загрузить его как обычный файл, но я надеюсь, что есть аккуратный способ.
Так что я хочу сделать, так это то же самое, что и пример кода ниже, но вместо создания нового документа я хочу создать новую ссылку на документ.
ClientContext context = new ClientContext("http://wdev2008:22880");
context.Load(context.Web);
List list = context.Web.Lists.GetByTitle("Test Doc Link Library");
context.Load(list);
context.ExecuteQuery();
FileCreationInformation fileCreateInfo = new FileCreationInformation();
fileCreateInfo.Content = new byte[] { 0x33 };
fileCreateInfo.Url = "zerobyte";
File file = list.RootFolder.Files.Add(fileCreateInfo);
context.Load(file);
context.ExecuteQuery();
ОБНОВЛЕНИЕ: Согласно моду на этом форуме, мне не разрешено спрашивать, как сделать это с помощью веб -службы в отдельном вопросе, поэтому я буду изменять заголовок, теги и контент по этому вопросу. Кто -нибудь знает, как сделать вставку с помощью веб -службы SharePoint или управления на стороне сервера или чего -то еще?
Решение
Оказывается, это может быть сделано, но это немного взломать, что включает в себя копию использования файла файла .aspx SharePoint для ссылок на документы, поиск строки и заменить его Создание «ссылки на документ» в библиотеке документов SharePoint программно..
Я адаптировал пример для использования модели объекта клиента:
string docLinkTemplate = null;
using (System.IO.StreamReader sr = new System.IO.StreamReader("SharePointDocLinkTemplate.txt"))
{
docLinkTemplate = sr.ReadToEnd();
}
string docLink = "http://myserver/test.doc";
docLinkTemplate = String.Format(docLinkTemplate, docLink);
FileCreationInformation fileCreateInfo = new FileCreationInformation();
fileCreateInfo.Content = Encoding.UTF8.GetBytes(docLinkTemplate);
fileCreateInfo.Url = "testlinkfordoc.doc.aspx";
File file = list.RootFolder.Files.Add(fileCreateInfo);
ListItem fileListItem = file.ListItemAllFields;
fileListItem["ContentType"] = "Link to a Document";
FieldUrlValue urlValue = new FieldUrlValue();
urlValue.Description = "Link to doc test";
urlValue.Url = docLink;
fileListItem["URL"] = urlValue;
context.Load(file);
context.ExecuteQuery();
(Надеемся, что мод снова не будет посчитать этот ответ недостойным. Жаль модов на этих веб -сайтах программирования, не должен получить Rep Stackoverflow, прежде чем они смогут начать бросать свой вес.)