Beim Abrufen eines Clientobjekts werden nicht alle Eigenschaften abgerufen
Letzte Änderung: Dienstag, 9. Februar 2010
Gilt für: SharePoint Foundation 2010
Verfügbar in SharePoint Online
Wenn Sie im Serverobjektmodell ein SPWeb-Objekt zurückgeben, werden alle Eigenschaften für die Verwendung in Code verfügbar. Zur Verbesserung der Leistung im Clientobjektmodell sind, wenn Sie ein Web-Objekt (JavaScript: Web) zurückgeben, bestimmte Eigenschaften nicht enthalten und müssen explizit abgerufen werden. Beispielsweise erbt die Web-Klasse (JavaScript: Web) die HasUniqueRoleAssignments-Eigenschaft (JavaScript: hasUniqueRoleAssignments) von der SecurableObject-Klasse (JavaScript: SecurableObject). Wenn Sie jedoch ein Web-Objekt (JavaScript: Web) zurückgeben, wird diese Eigenschaft nicht standardmäßig abgerufen. Weitere Informationen zu Eigenschaften, die beim Abrufen eines Objekts nicht standardmäßig zurückgegeben werden, finden Sie unter Übersicht über den Datenabruf.
Im folgenden Beispiel soll der Titel einer Website angezeigt werden. Außerdem soll angezeigt werden, ob die Website über eindeutige Rollenzuweisungen verfügt. Dazu wird im zweiten Aufruf zum Schreiben in die Konsole ein PropertyOrFieldNotInitializedException-Objekt zurückgegeben, da die HasUniqueRoleAssignments-Eigenschaft (JavaScript: hasUniqueRoleAssignments) nicht explizit abgerufen wurde.
Falscher Code
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class RetrieveProperties
{
static void Main()
{
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
Web oWebsite = clientContext.Web;
clientContext.Load(oWebsite);
clientContext.ExecuteQuery();
Console.WriteLine(oWebsite.Title);
Console.WriteLine(oWebsite.HasUniqueRoleAssignments);
}
}
}
In der folgenden Überarbeitung des vorherigen Beispiels werden die Eigenschaften HasUniqueRoleAssignments (JavaScript: hasUniqueRoleAssignments) und Title (JavaScript: title) explizit abgerufen.
Richtiger Code
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class RetrieveProperties
{
static void Main()
{
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
Web oWebsite = clientContext.Web;
clientContext.Load(
oWebsite,
website => website.Title,
website => website.HasUniqueRoleAssignments);
clientContext.ExecuteQuery();
Console.WriteLine("Title: " + oWebsite.Title +
"Unique role assignments: " + oWebsite.HasUniqueRoleAssignments);
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class RetrieveProperties
Shared Sub Main()
Dim clientContext As New ClientContext("http://MyServer/sites/MySiteCollection")
Dim oWebsite As Web = clientContext.Web
clientContext.Load(oWebsite, _
Function(website) website.Title, _
Function(website) website.HasUniqueRoleAssignments)
clientContext.ExecuteQuery()
Console.WriteLine("Title: " & oWebsite.Title & ControlChars.Lf & _
"Unique role assignments: " & oWebsite.HasUniqueRoleAssignments)
End Sub
End Class
End Namespace
function retrieveProperties () {
var clientContext = new SP.ClientContext('/sites/TestWebs/TestWeb1');
this.oWebsite = clientContext.get_web();
clientContext.load(oWebsite, 'Title', 'HasUniqueRoleAssignments');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Title: ' + oWebsite.get_title() +
'\nUnique role assignments: ' + oWebsite.get_hasUniqueRoleAssignments());
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Siehe auch
Konzepte
Gewusst wie: Abrufen von Listenelementen
Aufrufen von "Load" und "ExecuteQuery" vor dem Zugriff auf Werteigenschaften
Wertobjekte können nicht für mehrere Methoden in einer Abfrage verwendet werden
Clientobjekte können für mehrere Methoden in einer Abfrage verwendet werden