2010-11-26 14 views
5

URLによってListオブジェクトを取得する方法はありますか?Sharepoint 2010クライアントオブジェクトモデルURLからリストアイテムを取得

は、私はあなたがタイトルリストを取得することができます知っている:

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

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

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

しかし、私は解凍後、(例えばhttp://foo/subsite/ListName/Forms/AllItems.aspx)ユーザーがテキストボックスに自分のブラウザからURLをコピー&ペーストすることができるようにしたいとそのURLのオブジェクトを一覧表示します。

答えて

5

いいえ、ListオブジェクトをURLから直接取得する方法はありません。あなたが指摘したように、あなたはListのタイトルからそれを得ることができますし、IDを使って取得することもできます(ListCollection.GetById参照)。

私の提案は、いくつかのURLハッキングを行うことです。 SharePointのURLは予測可能なパターンに従います。ユーザーがリストURLをコピー/ペーストする場合は、ビューのURLをもっていることが最も確実です(/Forms/[ViewName].aspxなど)。パスで "/ Forms /"を探し、前の部分文字列を取得し、パスの新しい終わりをリスト名として使用します。

リストをロードしようとすると、リストが存在しない場合にスローされたArgumentExceptionをキャッチして、それをユーザーにエラーメッセージを表示する機会として使用することで、防御的なコーディングを行うのは簡単です。

+1

感謝を。それはDIYの明確なカットケースです。 –

+0

私はそれに取り組むつもりです。ありがとうございました。 –

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; 
    } 
} 
関連する問題