官术网_书友最值得收藏!

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對象的信息,在本章中的控制臺應用程序中是無法應用此對象的。

主站蜘蛛池模板: 济阳县| 康平县| 马关县| 屯门区| 广饶县| 怀仁县| 西华县| 新绛县| 江永县| 临猗县| 微山县| 永寿县| 常山县| 竹山县| 高碑店市| 荆门市| 建湖县| 金堂县| 湘西| 邯郸县| 和林格尔县| 格尔木市| 安徽省| 永定县| 泸溪县| 弥渡县| 和硕县| 尼勒克县| 迁西县| 泰来县| 垦利县| 贵定县| 丹寨县| 博客| 阳江市| 西贡区| 泸溪县| 鄂州市| 凤城市| 宁晋县| 德保县|