絶対URLからSPViewを取得する方法です。
SPViewはSPListと同様、http://から始まる絶対URLで取得することができません。
SPViewはホスト名からの相対URLで取得します。管理パスとかサブサイトとかで階層がどんなに深くなっていても、ホスト名からの相対URLを指定します。
従って、以下のコードのように何らかのやり方でホスト名までの部分を削除し、その値をSPWebのGetViewFromUrlメソッドに渡します。
1 | <span class="lnum"> 1: </span>Uri uri = <span class="kwrd">new</span> Uri(<span class="str">"http://test.co.jp/test/Lists/List1/AllItems.aspx"</span>); |
1 | <span class="lnum"> 2: </span>SPSite site = <span class="kwrd">new</span> SPSite(uri.AbsoluteUri); |
1 | <span class="lnum"> 3: </span>SPWeb web = site.OpenWeb(); |
1 | <span class="lnum"> 4: </span><span class="kwrd">string</span> targetUrl = uri.AbsoluteUrl.Replace(<span class="kwrd">string</span>.Format(<span class="str">"{0}{1}"</span>, uri.GetLeftPart(UriPartial.Scheme), uri.Host), <span class="str">""</span>); |
1 | <span class="lnum"> 5: </span>SPView view = web.GetViewFromUrl(targetUrl); |
指定の絶対URLでSPViewが取得できない場合、SPExceptionが発生します。
SPWebやSPListが取得できないときは、FileNotFoundExceptionが発生するのに、SPViewだけはSPExceptionなので、注意が必要です。