Freigeben über


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

Übersicht über den Datenabruf

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

Gruppieren des Datenabrufs in demselben Objekt