作为中心对象的客户端上下文

上次修改时间: 2010年7月15日

适用范围: SharePoint Foundation 2010

在 SharePoint Online 中提供

与对服务器上下文中的服务器对象进行的编程(此过程涉及实例化或返回提供对对象模型的访问权的中央对象)类似,新的客户端对象模型使用 ClientContext 对象 (JavaScript: ClientContext) 作为所有操作的"引力中心"。在获取并使用网站和数据的过程中,首先将检索上下文对象。例如,ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection") 将实例化特定网站集的上下文对象。

ClientContext 对象 (JavaScript: ClientContext) 将作为用于处理客户端对象模型的主入口点,并作为在网站集中安排请求和启动操作所借助的中央对象。使用 ClientContext 对象 (JavaScript: ClientContext) 的对象属性可获取网站集或网站(可通过其远程访问其他 SharePoint Foundation 客户端对象)。

ClientContext() 构造函数 (JavaScript: ClientContext(serverRelativeUrl)) 基于指定的网站或网站集初始化客户端上下文。在托管的客户端对象模型中,此 URL 必须是特定网站的绝对 URL。在 ECMAScript(JavaScript、JScript) 对象模型中,要么使用服务器的相对 URL,要么不使用任何参数。在 JavaScript 中,如果使用未采用任何参数的构造函数,则目标网站的 URL 为包含该网页的网站的 URL。

在实际执行查询之前,可使用通过客户端上下文返回的对象来定义要执行的操作。ClientContext 类 (JavaScript: ClientContext) 从 ClientRuntimeContext 类 (JavaScript: ClientRuntimeContext) 继承 Load<T>(T, []) (JavaScript: load(clientObject)) 和 LoadQuery() (JavaScript: loadQuery(clientObjectCollection, exp)) 方法。定义一个查询以执行特定操作并返回特定对象或属性,然后调用其中的某个方法来加载此查询。

在加载查询后,调用 ClientContext 对象 (JavaScript: ClientContext) 的 ExecuteQuery()ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) 方法 (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) 以将查询发送到服务器。Silverlight 客户端对象模型提供一个 ExecuteQuery() 方法(可从不会修改用户界面 (UI) 的线程同步调用此方法)和一个异步 ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) 方法(用于线程不会修改 UI 的情况)。这些用于执行查询的方法将表述表示对客户端执行的操作的 XML,并将此 XML 发送到服务器。在托管对象模型中,此调用是同步的,这表示在收到来自服务器的响应之前将组织代码执行。此调用在 Silverlight 对象模型中可以是同步的或异步的,而在 JavaScript 对象模型中始终是异步的。在异步调用中,代码将继续执行而不会等待服务器响应。在 Silverlight 对象模型和 JavaScript 对象模型中,可以实现在收到服务器响应时调用的回调函数。

在 SharePoint Foundation Silverlight 和 JavaScript 对象模型中,可以使用客户端上下文的 Current 属性 (JavaScript: current) 从 SharePoint Foundation 中运行的页面返回当前请求上下文。

下面的示例演示使用 ClientContext 类 (JavaScript: ClientContext) 的方法返回网站标题的基本步骤:

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class UsingClientContext
    {
        static void Main()
        {
            ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");

            Web oWebsite = clientContext.Web;

            clientContext.Load(oWebsite);

            clientContext.ExecuteQuery();

            Console.WriteLine(oWebsite.Title);
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
   Class UsingClientContext
      
      Shared Sub Main()
         Dim clientContext As New ClientContext("http://MyServer/sites/MySiteCollection")

         Dim oWebsite As Web = clientContext.Web

         clientContext.Load(oWebsite)

         clientContext.ExecuteQuery()
         
         Console.WriteLine(oWebsite.Title)
      End Sub
   End Class
End Namespace
function useClientContext() {
    var clientContext = new SP.ClientContext('/sites/MySiteCollection');
    this.oWebsite = clientContext.get_web();
    clientContext.load(oWebsite);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {
    alert('Title: ' + oWebsite.get_title());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

请参阅

概念

对象模型层次结构和标识

客户端对象、值对象和标量属性

创建客户端对象

客户端对象模型准则

托管对象模型和 ECMAScript 对象模型的区别

常见编程任务

其他资源

客户端类库

ECMAScript 类库

使用 SharePoint Foundation 2010 托管客户端对象模型

客户端对象模型资源中心(该链接可能指向英文页面)