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