- SharePoint 2013 應用開發實戰
- 劉中正
- 1014字
- 2021-03-26 18:51:20
2.2 SPSite對象和SPWeb對象
SPSite對象和SPWeb對象基本上是同時被使用的,SPSite對象代表SharePoint的網站集對象,SPWeb對象代表SharePoint網站集下面的網站對象。開發人員在進行開發工作時總會最先寫到這兩個類。
2.2.1 SPSite
在介紹SPSite對象之前,先介紹一下SPFarm和SPWebApplication這兩個不常用對象,以方便讀者下面的理解。SPFarm表示SharePoint的場對象,SPWebApplication表示SharePoint中的Web應用程序對象,可以通過SPFarm的SPWebApplications屬性獲得SharePoint中Web應用程序對象的集合,進而通過索引獲得單一的Web應用程序對象,也可以通過SPWebApplication的Lookup方法直接獲取單一的Web應用程序對象。
SPSite對象可獲取一個Web應用程序中的某個網站集,網站集包括一個頂層網站和頂層網站下面的所有子網站。由SPSite對象構成的集合代表某個Web應用程序下的網站集的集合,叫做SPSiteCollection對象。
如何構建一個SPSite對象呢?使用SPSite的構造方法如下:
using (SPSite site = new SPSite("http://<mysiteurl>")){}
如果想遍歷某個Web應用程序下面的網站集對象,可以使用SPWebApplication對象下的Sites屬性,該屬性返回指定Web應用程序下的網站集的集合;在集合對象后面加上索引可以返回單一的網站集SPSite對象。
當然,利用SPWebApplication對象來進行網站集的添加、修改、刪除操作也是可以的。
2.2.2 SPWeb
SPWeb對象可獲取一個網站集下的某個網站。由SPWeb對象構成的集合代表某個網站集下面所有SharePoint網站的集合,叫做SPWebCollection對象。
SharePoint的網站是具有層次結構關系的,網站的下面可以有子網站,子網站下面還可以有子網站。獲得一個SPWeb對象有很多種途徑。
通過URL獲取一個指定的網站對象:
using (SPSite site = new SPSite("http://<mysiteurl>/subsite")) { using (SPWeb web = site.OpenWeb()) { //todo } }
通過網站集對象的網站集合獲取:
using (SPSite site = new SPSite("http://<mysiteurl>/subsite")) { using (SPWeb web = site.AllWebs'0') { //todo } }
借助以上提到的兩個對象模型,我們可以寫幾行代碼實現一些簡單的操作。
獲取網站的信息:
string webTitle = string.Empty; string webDescription = string.Empty; using (SPSite site = new SPSite("http://<mysiteurl>/subSite")) { using (SPWeb web = site.OpenWeb()) { webTitle = web.Title; webDescription = web.Description; } }
修改網站的信息:
using (SPSite site = new SPSite("http://<mysiteurl>/subSite")) { using (SPWeb web = site.OpenWeb()) { web.Title = web.Title + "_M"; web.Description = web.Description + "_M"; web.Update(); } }
添加一個網站:
using (SPSite site = new SPSite("http://<mysiteurl>")) { using (SPWeb web = site.AllWebs.Add("subSite1", "添加的網站標題", "添加的網站描述", 2052, SPWebTemplate.WebTemplateSTS, false, false)) { } }
刪除一個網站:
using (SPSite site = new SPSite("http://<mysiteurl>/subSite1")) { using (SPWeb web = site.OpenWeb()) { web.Delete(); } }
2.2.3 SPContext對象
SPContext代表當前HTTP請求中的上下文信息,在SharePoint環境中,可以通過SPContext對象取到非常有用的信息。
SPSite currentSite = SPContext.Current.Site; SPWeb currentWeb = SPContext.Current.Web; SPUser currentUser = SPContext.Current.Web.CurrentUser;
從這里面獲取到的對象具有當前請求用戶的權限,如果想提權使代碼運行在系統賬戶下,可以用下面的代碼段:
SPSecurity.RunWithElevatedPrivileges(delegate() { //這個方法將提升權限執行 });
初學者在這里要注意一下,不要將外部聲明的SPSite、SPWeb對象拿到這里面直接使用,這樣的提權是沒有效果的,提權一定要在上面的語句塊中重新構造SPSite、SPWeb對象。
需要注意的是,只有處在某個HTTP請求中時才可以使用該對象獲取SharePoint對象的信息,在本章中的控制臺應用程序中是無法應用此對象的。