Partager via


La récupération d'un objet client ne récupère pas toutes les propriétés

Dernière modification : mardi 9 février 2010

S’applique à : SharePoint Foundation 2010

Disponible dans SharePoint Online

Dans ce modèle d'objet serveur, quand vous retournez un objet SPWeb, toutes ses propriétés deviennent utilisables dans le code. Mais pour améliorer les performances dans le modèle d'objet client, quand vous retournez un objet Web (JavaScript: Web), certaines propriétés ne sont pas incluses, et vous devez les extraire explicitement. Par exemple, la classe Web (JavaScript: Web) hérite de la propriété HasUniqueRoleAssignments (JavaScript: hasUniqueRoleAssignments) de la classe SecurableObject (JavaScript: SecurableObject), mais quand vous retournez un objet Web (JavaScript: Web), cette propriété n'est pas extraite par défaut. Pour plus d'informations sur les propriétés qui ne sont pas retournées par défaut lorsque vous extrayez un objet, consultez Vue d'ensemble de la récupération des données.

L'exemple suivant, qui vise à afficher le titre d'un site Web et à indiquer si ce site Web a des affectations de rôles uniques, retourne un PropertyOrFieldNotInitializedException sur le deuxième appel d'écriture sur la console car la propriété HasUniqueRoleAssignments (JavaScript: hasUniqueRoleAssignments) n'a pas été extraite de façon explicite.

Code incorrect

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);
        }
    }
}

La version suivante de l'exemple précédent extrait explicitement la propriété HasUniqueRoleAssignments (JavaScript: hasUniqueRoleAssignments), ainsi que la propriété Title (JavaScript: title).

Code correct

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());
}

Voir aussi

Concepts

Vue d'ensemble de la récupération des données

Procédure : récupérer des éléments de liste

Appeler Load et ExecuteQuery avant d’accéder aux propriétés de valeur

Les objets valeur ne sont pas utilisables entre méthodes dans une requête

Les objets clients peuvent être utilisés à travers les méthodes dans une requête

Récupération de données de groupe sur le même objet