Поделиться через


Работа с веб-сайтами

Дата последнего изменения: 29 апреля 2011 г.

Применимо к: SharePoint Foundation 2010

В этой статье
Получение свойств веб-сайта
Получение только указанных свойств веб-сайта
Обновление заголовка и описания веб-сайта
Создание веб-сайта

Доступно на сайте SharePoint Online

Для работы с веб-сайтами используйте конструктор ClientContext() (JavaScript: ClientContext(serverRelativeUrl)) и передайте URL-адрес или URI для получения определенного контекста.

Получение свойств веб-сайта

Используйте свойство Web (JavaScript: web) класса ClientContext (JavaScript: ClientContext) для определения свойств объекта веб-сайта, которые размещены по указанному URL-адресу контекста. После загрузки объекта веб-сайта с помощью метода Load<T>(T, []) method (JavaScript: load(clientObject)) и вызова ExecuteQuery() или ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) можно получить доступ ко всем свойствам этого веб-сайта. В следующем примере отображается заголовок и описание корневого веб-сайта в указанном семействе сайтов, хотя все другие возвращаемые свойства по умолчанию становятся доступными после загрузки объекта веб-сайта и выполнения запроса. Сведения о списке недоступных по умолчанию свойств при получении определенных клиентских объектов см. в разделе Обзор извлечения данных.

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

Получение только указанных свойств веб-сайта

Для снижения объема передаваемых данных между клиентом и сервером можно получать только указанные свойства объекта веб-сайта, а не все свойства. В этом случае используйте запрос LINQ или синтаксис лямбда-выражений с методом Load<T>(T, []) (JavaScript: load(clientObject)) для определения того, какие свойства получать от сервера. В следующем примере после вызова запроса ExecuteQuery() (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) доступны только заголовок и дата создания объекта веб-сайта. При попытке записи, например при записи oWebsite.Description в консоль, возвращается исключение 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());
}

Обратите внимание, что в JavaScript конструктор ClientContext(serverRelativeUrl) принимает URL-адрес относительно сервера, а метод load(clientObject) принимает строки, а не фактические объекты LINQ.

Обновление заголовка и описания веб-сайта

Для изменения веб-сайта следует задать его свойства и вызвать метод Update() (JavaScript: update()) аналогично применению серверной объектной модели. Однако в клиентской объектной модели следует вызвать ExecuteQuery() или ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQuery(succeededCallback, failedCallback)) для запроса пакетной обработки всех указанных команд. В следующем примере изменяется заголовок и описание указанного веб-сайта.

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

Создание веб-сайта

Для создания объекта веб-сайта используйте класс WebCreationInformation (JavaScript: WebCreationInformation) для определения его свойств и затем передайте этот объект методу Add(WebCreationInformation) (JavaScript: add(parameters)) класса WebCollection (JavaScript: WebCollection).

В следующем примере создается веб-сайт блогов в семействе сайтов.

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

В предыдущем примере для получения свойств ServerRelativeUrl (JavaScript: serverRelativeUrl) и Created (JavaScript: created) используется запрос LINQ, но их значения недоступны до их явного запроса.

ПримечаниеПримечание

При использовании LINQ для создания запросов для клиентской объектной модели применяется поставщик LINQ to Objects, а не LINQ to SharePoint, который можно использовать только при написании кода для объектной модели сервера.

Дополнительные сведения и пример работы с веб-сайтами в контексте объектной модели Silverlight SharePoint Foundation см. в статье Использование объектной модели Silverlight.

См. также

Концепции

Обзор извлечения данных

Создание клиентского объекта

Инструкции по использованию клиентской объектной модели

Общие задачи программирования

Другие ресурсы

Библиотека классов для клиента

Библиотека классов ECMAScript