Share via


Gewusst wie: Arbeiten mit Websites

Letzte Änderung: Freitag, 29. April 2011

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
Abrufen der Eigenschaften einer Website
Abrufen nur angegebener Eigenschaften einer Website
Aktualisieren des Titels und der Beschreibung einer Website
Erstellen einer Website

Verfügbar in SharePoint Online

Beim Arbeiten mit Websites verwenden Sie zunächst den ClientContext()-Konstruktor (JavaScript: ClientContext(serverRelativeUrl)) und übergeben eine URL oder einen URI, um einen bestimmten Anforderungskontext zurückzugeben.

Abrufen der Eigenschaften einer Website

Verwenden Sie die Web-Eigenschaft (JavaScript: web) der ClientContext-Klasse (JavaScript: ClientContext), um die Eigenschaften des Websiteobjekts anzugeben, das sich unter der angegebenen Kontakt-URL befindet. Wenn Sie das Websiteobjekt über die Load<T>(T, [])-Methode (JavaScript: load(clientObject)) geladen und dann ExecuteQuery() oder ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) aufgerufen haben, erhalten Sie Zugriff auf alle Eigenschaften dieser Website. Im folgenden Beispiel werden der Titel und die Beschreibung der Stammwebsite in einer angegebenen Websitesammlung angezeigt, obwohl alle anderen standardmäßig zurückgegebenen Eigenschaften verfügbar werden, wenn Sie das Websiteobjekt geladen und die Abfrage ausgeführt haben. Eine Liste der Eigenschaften, die nicht standardmäßig verfügbar sind, wenn Sie bestimmte Clientobjekte abrufen, finden Sie unter Übersicht über den Datenabruf.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class RetrieveWebsite
    {
        static void Main()
        {
            string siteUrl = "http://MyServer/sites/MySiteCollection";

            ClientContext clientContext = new ClientContext(siteUrl);

            Web oWebsite = clientContext.Web;

            clientContext.Load(oWebsite);

            clientContext.ExecuteQuery();

            Console.WriteLine("Title: {0} Description: {1}", oWebsite.Title, oWebsite.Description);
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class RetrieveWebsite

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"

            Dim clientContext As New ClientContext(siteUrl)
            Dim oWebsite As Web = clientContext.Web

            clientContext.Load(oWebsite)

            clientContext.ExecuteQuery()

            Console.WriteLine("Title: {0} Description: {1}", oWebsite.Title, oWebsite.Description)
        End Sub
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
    
function retrieveWebSite() {
    var clientContext = new SP.ClientContext(siteUrl);
    this.oWebsite = clientContext.get_web();

    clientContext.load(this.oWebsite);

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded(sender, args) {
    alert('Title: ' + this.oWebsite.get_title() + ' Decription: ' + this.oWebsite.get_description());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Abrufen nur angegebener Eigenschaften einer Website

Sie können die unnötige Übertragung von Daten zwischen Client und Server reduzieren, indem Sie nicht alle, sondern nur angegebene Eigenschaften des Websiteobjekts zurückgeben. In diesem Fall verwenden Sie LINQ-Abfragen oder die Lambda-Ausdruckssyntax mit der Load<T>(T, [])-Methode (JavaScript: load(clientObject)), um anzugeben, welche Eigenschaften vom Server zurückgegeben werden sollen. Im folgenden Beispiel werden nur der Titel und das Erstellungsdatum des Websiteobjekts verfügbar, nachdem ExecuteQuery() (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) aufgerufen wurde. Wenn Sie beispielsweise versuchen, oWebsite.Description in die Konsole zu schreiben, erhalten Sie ein PropertyOrFieldNotInitializedException .

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class RetrieveWebsiteProperties
    {
        static void Main()
        {
            string siteUrl = "http://MyServer/sites/MySiteCollection";

            ClientContext clientContext = new ClientContext(siteUrl);
            Web oWebsite = clientContext.Web;

            clientContext.Load(
                oWebsite,
                website => website.Title,
                website => website.Created);

            clientContext.ExecuteQuery();

            Console.WriteLine("Title: {0} Created: {1}", oWebsite.Title, oWebsite.Created);
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class RetrieveWebsiteProperties

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"

            Dim clientContext As New ClientContext(siteUrl)
            Dim oWebsite As Web = clientContext.Web

            clientContext.Load(oWebsite, _ 
                           Function(website) website.Title, _ 
                           Function(website) website.Created)

            clientContext.ExecuteQuery()

            Console.WriteLine("Title: {0} Created: {1}", oWebsite.Title, oWebsite.Created)
        End Sub
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
    
function retrieveWebSiteProperties() {
    var clientContext = new SP.ClientContext(siteUrl);
    this.oWebsite = clientContext.get_web();

    clientContext.load(this.oWebsite, 'Title', 'Created');

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded(sender, args) {
    alert('Title: ' + this.oWebsite.get_title() + ' Created: ' + this.oWebsite.get_created());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

In JavaScript wird für den ClientContext(serverRelativeUrl)-Konstruktor eine serverrelative URL verwendet, und für die load(clientObject)-Methode werden Zeichenfolgen anstelle der eigentlichen LINQ-Objekte verwendet.

Aktualisieren des Titels und der Beschreibung einer Website

Zum Ändern einer Website legen Sie deren Eigenschaften fest und rufen ähnlich wie im Serverobjektmodell die Update()-Methode (JavaScript: update()) auf. Im Clientobjektmodell müssen Sie jedoch ExecuteQuery() oder ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQuery(succeededCallback, failedCallback)) aufrufen, um die Batchverarbeitung aller angegebenen Befehle anzufordern. Im folgenden Beispiel werden der Titel und die Beschreibung einer angegebenen Website geändert.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class UpdateWebSite
    {
        static void Main()
        {
            string siteUrl = "http://MyServer/sites/MySiteCollection";

            ClientContext clientContext = new ClientContext(siteUrl);
            Web oWebsite = context.Web;

            oWebsite.Title = "Updated Web Site";
            oWebsite.Description = "This is an updated Web site.";

            oWebsite.Update();

            clientContext.ExecuteQuery();
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class UpdateWebSite

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"

            Dim clientContext As New ClientContext(siteUrl)
            Dim oWebsite As Web = clientContext.Web

            oWebsite.Title = "Updated Web Site"
            oWebsite.Description = "This is an updated Web site."

            oWebsite.Update()

            clientContext.ExecuteQuery()
        End Sub
     End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
    
function updateWebSite() {
    var clientContext = new SP.ClientContext(siteUrl);
    this.oWebsite = clientContext.get_web();

    this.oWebsite.set_title('Updated Web Site');
    this.oWebsite.set_description('This is an updated Web site.');
    this.oWebsite.update();

    clientContext.load(this.oWebsite, 'Title', 'Description');

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded(sender, args) {
    alert('Title: ' + this.oWebsite.get_title() + ' Decription: ' + this.oWebsite.get_description());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Erstellen einer Website

Zum Erstellen eines Websiteobjekts verwenden Sie die WebCreationInformation-Klasse (JavaScript: WebCreationInformation), um die Eigenschaften zu definieren und übergeben dann dieses Objekt der Add(WebCreationInformation)-Methode (JavaScript: add(parameters)) der WebCollection-Klasse (JavaScript: WebCollection).

Im folgenden Beispiel wird eine neue Blogwebsite in einer Websitesammlung erstellt.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class CreateWebSite
    {
        static void Main()
        {
            string siteUrl = "http://MyServer/sites/MySiteCollection";
            string blogDescription = "A new blog Web site.";
            int blogLanguage = 1033;
            string blogTitle = "Blog Web Site";
            string blogUrl = "blogwebsite";
            bool blogPermissions = false;
            string webTemplate = "BLOG#0";

            ClientContext clientContext = new ClientContext(siteUrl);
            Web oWebsite = clientContext.Web;

            WebCreationInformation webCreateInfo = new WebCreationInformation();
            webCreateInfo.Description = blogDescription;
            webCreateInfo.Language = blogLanguage;
            webCreateInfo.Title = blogTitle;
            webCreateInfo.Url = blogUrl;
            webCreateInfo.UseSamePermissionsAsParentSite = blogPermissions;
            webCreateInfo.WebTemplate = webTemplate;

            Web oNewWebsite = oWebsite.Webs.Add(webCreateInfo);

            clientContext.Load(
                oNewWebsite,
                website => website.ServerRelativeUrl,
                website => website.Created);

            clientContext.ExecuteQuery();

            Console.WriteLine("Server-relative Url: {0} Created: {1}", oNewWebsite.ServerRelativeUrl, oNewWebsite.Created);
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class CreateWebSite

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim blogDescription As String = "A new Blog Web site."
            Dim blogLanguage As Integer = 1033
            Dim blogTitle As String = "Blog Web Site"
            Dim blogUrl As String = "blogwebsite"
            Dim blogPermissions As Boolean = False
            Dim webTemplate As String = "BLOG#0"

            Dim clientContext As New ClientContext(siteUrl)
            Dim oWebsite As Web = clientContext.Web

            Dim webCreateInfo As New WebCreationInformation()
            webCreateInfo.Description = blogDescription
            webCreateInfo.Language = blogLanguage
            webCreateInfo.Title = blogTitle
            webCreateInfo.Url = blogUrl
            webCreateInfo.UseSamePermissionsAsParentSite = blogPermissions
            webCreateInfo.WebTemplate = webTemplate

            Dim oNewWebsite As Web = oWebsite.Webs.Add(webCreateInfo)

            clientContext.Load(oWebsite, _ 
                               Function(website) website.ServerRelativeUrl, _ 
                               Function(website) website.Created)

            clientContext.ExecuteQuery()

            Console.WriteLine("Server-relative Url: {0} Created: {1}", oWebsite.ServerRelativeUrl, oWebsite.Created)
        End Sub
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
    
function createWebSite() {
    var blogDescription = 'A new Blog Web site.';
    var blogLanguage = 1033;
    var blogTitle = 'Blog Web Site';
    var blogUrl = 'blogwebsite';
    var blogPermissions = false;
    var webTemplate = 'BLOG#0';

    var clientContext = new SP.ClientContext(siteUrl);
    this.oWebsite = clientContext.get_web();

    var webCreateInfo = new SP.WebCreationInformation();
    webCreateInfo.set_description(blogDescription);
    webCreateInfo.set_language(blogLanguage);
    webCreateInfo.set_title(blogTitle);
    webCreateInfo.set_url(blogUrl);
    webCreateInfo.set_useSamePermissionsAsParentSite(blogPermissions);
    webCreateInfo.set_webTemplate(webTemplate);

    this.oNewWebsite = this.oWebsite.get_webs().add(webCreateInfo);

    clientContext.load(this.oNewWebsite, 'ServerRelativeUrl', 'Created');

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded(sender, args) {
    alert('Title: ' + this.oWebsite.get_title() + ' Decription: ' + this.oWebsite.get_description());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Im vorherigen Beispiel wird ein LINQ-Abfrageausdruck verwendet, um die Eigenschaften ServerRelativeUrl (JavaScript: serverRelativeUrl) und Created (JavaScript: created) zurückzugeben, deren Werte erst zum Anzeigen verfügbar sind, wenn Sie dies explizit anfordern.

HinweisHinweis

Wenn Sie mithilfe von LINQ Abfragen für das Clientobjektmodell erstellen, verwenden Sie LINQ to Objects, nicht den LINQ to SharePoint-Anbieter, der nur verwendet werden kann, wenn Sie Code für das Serverobjektmodell schreiben.

Weitere Informationen und ein Beispiel für das Arbeiten mit Websites im Kontext des SharePoint Foundation Silverlight-Objektmodells finden Sie unter Verwenden des Silverlight-Objektmodells.

Siehe auch

Konzepte

Übersicht über den Datenabruf

Erstellen von Clientobjekten

Richtlinien für das Clientobjektmodell

Allgemeine Programmieraufgaben

Weitere Ressourcen

Clientklassenbibliothek

ECMAScript-Klassenbibliothek