作为中心对象的客户端上下文
上次修改时间: 2010年7月15日
适用范围: SharePoint Foundation 2010
与对服务器上下文中的服务器对象进行的编程(此过程涉及实例化或返回提供对对象模型的访问权的中央对象)类似,新的客户端对象模型使用 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());
}
请参阅
概念
其他资源
使用 SharePoint Foundation 2010 托管客户端对象模型