Работа с веб-сайтами
Дата последнего изменения: 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.
См. также
Концепции
Инструкции по использованию клиентской объектной модели