2010-11-26 4 views
5

Есть ли способ получить объект List по URL-адресу?Модель объекта клиента SharePoint SharePoint получает элемент списка из URL-адреса

Я знаю, что вы можете получить список по названию:

ClientContext context = new ClientContext("http://foo"); 

List list = context.Web.Lists.GetByTitle("title"); 

context.Load(list); 
context.ExecuteQuery(); 

Но я хочу, чтобы пользователь мог копировать-вставить URL из браузера в текстовое поле (например, http://foo/subsite/ListName/Forms/AllItems.aspx), а затем извлечь Список объектов из этого URL.

ответ

5

Нет, нет способа получения объекта List непосредственно из URL-адреса. Как вы указали, вы можете получить его из заголовка списка, и вы также можете получить его через свой идентификатор (см. ListCollection.GetById).

Мое предложение - сделать некоторые взлома URL; URL-адреса SharePoint следуют предсказуемому шаблону. Если пользователь копирует/вставляет URL-адрес списка, у них наверняка будет URL-адрес представления, которое закончится чем-то вроде /Forms/[ViewName].aspx. Ищите «/ Forms /» в пути, возьмите предыдущую подстроку, затем используйте новый конец пути в качестве имени списка.

И достаточно легко сделать некоторую защитную кодировку, пытаясь загрузить список, поймав ArgumentException, который вызывается, если Список не существует, и используя это как возможность представить пользователю сообщение об ошибке.

+1

Спасибо. Это четкий разрез DIY. – 2010-11-30 12:18:52

0

Попробуйте это:

private static List GetListByServerRelativeUrl(string serverRelativeUrl) 
{ 
    using (ClientContext ctx = new ClientContext("http://yoursite")) 
    { 
     var q = from list in ctx.Web.Lists 
       where list.RootFolder.ServerRelativeUrl == serverRelativeUrl 
       select list; 
     var r = ctx.LoadQuery(q); 
     ctx.ExecuteQuery(); 
     return r; 
    } 
} 
Смежные вопросы