Клиентская объектная модель Sharepoint 2010 получает элемент списка из URL - PullRequest
5 голосов
/ 26 ноября 2010

Есть ли способ получить объект List по 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), а затем извлечь объект List из этого URL-адреса.

Ответы [ 2 ]

5 голосов
/ 29 ноября 2010

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

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

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

0 голосов
/ 02 марта 2014

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

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...