絶対URLからSPWebを取得する方法です。
SPWebを取得するには、まずSPSiteを取得する必要があります。
SPSiteの取得は、別の記事にも書いた通り、SPSiteのコンストラクタの引数に、絶対URLを渡して取得します。
その後、続けてOpenWebメソッドを引数なしで呼び出すことで、SPWebを取得できます。
以下のコードでは、testというサブサイトを指定しています。
このコードの結果は、testサブサイトが取得できます。
1 | <span class="lnum"> 1: </span>SPSite site = <span class="kwrd">new</span> SPSite(<span class="str">"http://test.co.jp/test/Lists/List1/DispForm.aspx?ID=1"</span>); |
1 | <span class="lnum"> 2: </span>SPWeb web = site.OpenWeb(); |
SPSiteと同様、サイトが特定できれば、後半のURLは存在しないコンテンツを指していても問題ありません。
以下のコードでは、test2という存在しないサブサイトを指しています。
このコードの結果は、http://test.co.jpのトップサイトが取得できます。
1 | <span class="lnum"> 1: </span>SPSite site = <span class="kwrd">new</span> SPSite(<span class="str">"http://test.co.jp/test2/Lists/List1/DispForm.aspx?ID=1"</span>); |
1 | <span class="lnum"> 2: </span>SPWeb web = site.OpenWeb(); |
このやり方の場合、SPSiteが取得できないことはあっても、SPWebが取得できないことはありません。
SPSiteが取得できていれば、存在しないサブサイト名を指定していても、OpenWebメソッドによりSPSiteのRootWebが取得できます。
逆に言うと、URLの間違いに気づかず、関係ないSPWebを使って処理をしてしまうことがあるので、注意が必要です。