Clientkontext als zentrales Objekt
Letzte Änderung: Donnerstag, 15. Juli 2010
Gilt für: SharePoint Foundation 2010
Verfügbar in SharePoint Online
Ähnlich wie bei der Programmierung für Serverobjekte im Serverkontext, wobei ein zentrales Objekt instanziiert oder zurückgegeben werden muss, das den Zugriff auf das Objektmodell ermöglicht, verwenden die neuen clientseitigen Objektmodelle ein ClientContext-Objekt (JavaScript: ClientContext) als "Schwerkraftzentrum" für alle Vorgänge. Der Vorgang zum Abrufen von und Arbeiten mit Websites und Daten beginnt mit dem Abrufen eines Kontextobjekts. Beispielsweise wird mit ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection") das Kontextobjekt für eine bestimmte Websitesammlung instanziiert.
Das ClientContext-Objekt (JavaScript: ClientContext) dient als Haupteinstiegspunkt für den Zugriff auf das Clientobjektmodell und als zentrales Objekt, über das innerhalb einer Websitesammlung Anforderungen koordiniert und Aktionen gestartet werden. Verwenden Sie Objekteigenschaften des ClientContext-Objekts (JavaScript: ClientContext), um Websitesammlungen oder Websites abzurufen, über die Sie remote auf andere SharePoint Foundation-Clientobjekte zugreifen können.
Mit dem ClientContext()-Konstruktor (JavaScript: ClientContext(serverRelativeUrl)) wird ein Clientkontext auf der Basis einer angegebenen Website oder Websitesammlung initialisiert. Beim verwalteten Clientobjektmodell muss die URL die absolute URL einer bestimmten Website sein. Beim ECMAScript (JavaScript, JScript)-Objektmodell ist entweder eine serverrelative URL oder kein Parameter erforderlich. Wenn Sie in JavaScript den Konstruktor ohne Parameter verwenden, handelt es sich bei der Zielwebsite-URL um die URL der Website, die die Webseite enthält.
Vor der Ausführung einer Abfrage definieren Sie mithilfe der Objekte, die über den Clientkontext zurückgegeben werden, die auszuführenden Aktionen. Die ClientContext-Klasse (JavaScript: ClientContext) erbt die Methoden Load<T>(T, []) (JavaScript: load(clientObject)) und LoadQuery() (JavaScript: loadQuery(clientObjectCollection, exp)) von der ClientRuntimeContext-Klasse (JavaScript: ClientRuntimeContext). Sie definieren eine Abfrage, um bestimmte Aktionen auszuführen und bestimmte Objekte oder Eigenschaften zurückzugeben, und anschließend rufen Sie eine dieser Methoden auf, um die Abfrage zu laden.
Nachdem Sie eine Abfrage geladen haben, rufen Sie die Methode ExecuteQuery() oder ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) des ClientContext-Objekts (JavaScript: ClientContext) auf, um die Abfrage an den Server zu senden. Das Silverlight-Clientobjektmodell bietet sowohl eine ExecuteQuery()-Methode, die synchron in Threads aufgerufen werden kann, mit denen die Benutzeroberfläche nicht geändert wird, als auch eine asynchrone ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler)-Methode für Fälle, in denen die Benutzeroberfläche von Threads geändert wird. Diese Methoden zum Ausführen von Abfragen ergeben XML, das die auf dem Client ausgeführten Aktionen repräsentiert, und mit denen das XML an den Server gesendet wird. Beim verwalteten Objektmodell ist dieser Aufruf synchron. Dies bedeutet, dass die Codeausführung solange blockiert ist, bis eine Antwort vom Server empfangen wird. Dieser Aufruf kann im Silverlight-Objektmodell synchron oder asynchron sein, ist aber beim JavaScript-Objektmodell immer asynchron. Bei einem asynchronen Aufruf wird der Code weiterhin ausgeführt und es wird nicht auf eine Antwort des Servers gewartet. Beim Silverlight- und JavaScript-Objektmodell können Sie eine Rückruffunktion implementieren, die aufgerufen wird, wenn die Antwort des Servers empfangen wird.
Beim SharePoint Foundation Silverlight- und JavaScript-Objektmodell können Sie mit der Current-Eigenschaft (JavaScript: current) des Clientkontexts den aktuellen Anforderungskontext von Seiten zurückgeben, die in SharePoint Foundation ausgeführt werden.
Im folgenden Beispiel werden die grundlegenden Schritte veranschaulicht, um mit den Methoden der ClientContext-Klasse (JavaScript: ClientContext) den Titel einer Website zurückzugeben:
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());
}
Siehe auch
Konzepte
Objektmodellhierarchie und Objektidentität
Clientobjekte, Wertobjekte und skalare Eigenschaften
Richtlinien für das Clientobjektmodell
Unterschiede zwischen verwalteten und ECMAScript-Objektmodellen
Allgemeine Programmieraufgaben
Weitere Ressourcen
Verwenden des verwalteten Clientobjektmodells von SharePoint Foundation 2010