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

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

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

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

Если может быть создан клиентский объект, такой как объект List (JavaScript: List), его соответствующая коллекция объектов, такая как ListCollection (JavaScript: ListCollection), будет иметь метод "Add", принимающий объект ClientObjectCreationInformation, например ListCreationInformation (JavaScript: ListCreationInformation), который содержит все данные, необходимые для создания нового объекта.

В следующем примере используется WebCreationInformation (JavaScript: WebCreationInformation) с методом Add(WebCreationInformation) (JavaScript: add(parameters)), чтобы создать дочерний веб-сайт для заданного веб-сайта.

ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
WebCollection collWeb = clientContext.Web.Webs;

WebCreationInformation webCreationInfo = new WebCreationInformation();
webCreationInfo.Title = "My New Web Site";
webCreationInfo.Description = "Description of new Web site...";
webCreationInfo.Language = 1033;
webCreationInfo.Url = "MyNewWebSite";
webCreationInfo.UseSamePermissionsAsParentSite = true;
webCreationInfo.WebTemplate = "STS#0";

Web oNewWebsite = collWeb.Add(webCreationInfo);
clientContext.ExecuteQuery();
Dim clientContext As New ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite")
Dim collWeb As WebCollection = clientContext.Web.Webs
         
Dim webCreationInfo As New WebCreationInformation()
webCreationInfo.Title = "My New Web Site"
webCreationInfo.Description = "Description of new Web site..."
webCreationInfo.Language = 1033
webCreationInfo.Url = "MyNewWebSite"
webCreationInfo.UseSamePermissionsAsParentSite = True
webCreationInfo.WebTemplate = "STS#0"
         
Dim oNewWebsite As Web = collWeb.Add(webCreationInfo)
clientContext.ExecuteQuery()
function createWebsite() {

    var clientContext = new SP.ClientContext('http://MyServer/sites/MySiteCollection/MyWebSite');
    var collWeb = clientContext.get_web().get_webs();

    var webCreationInfo = new SP.WebCreationInformation();
    webCreationInfo.set_title('My New Web Site');
    webCreationInfo.set_description('Description of new Web site...');
    webCreationInfo.set_language(1033);
    webCreationInfo.set_url('MyNewWebSite');
    webCreationInfo.set_useSamePermissionsAsParentSite(true);
    webCreationInfo.set_webTemplate('STS#0');

    var oNewWebsite = collWeb.add(webCreationInfo);


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

function onQuerySucceeded() {
    alert("Created Web site.");
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

В предыдущем примере метод Add(WebCreationInformation) (JavaScript: add(parameters)) создает веб-сайт сразу же в коллекции клиентских объектов без ожидания последующего получения данных коллекции и без вызова ExecuteQuery() или ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)).

Можно использовать объект ClientObjectCreationInformation для создания множества объектов. Создание узла навигации, например, также включает использование объекта ClientObjectCreationInformation. В следующем примере определен узел навигации посредством объекта NavigationNodeCreationInformation (JavaScript: NavigationNodeCreationInformation) и использован этот объект для добавления ссылки в области Быстрого запуска определенного веб-сайта. В этом примере добавляется ссылка на список в другом веб-сайте в качестве второго дочернего узла в узле верхнего уровня Списки.

ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");

NavigationNodeCollection collNavNode = clientContext.Web.Navigation.QuickLaunch;

clientContext.Load(collNavNode);
clientContext.ExecuteQuery();

NavigationNodeCollection collChildNavNode = collNavNode[1].Children;

clientContext.Load(collChildNavNode);
clientContext.ExecuteQuery();

NavigationNodeCreationInformation navNodeCreationInfo = new NavigationNodeCreationInformation();

navNodeCreationInfo.PreviousNode = collChildNavNode[0];
navNodeCreationInfo.Title = "My Navigation Node";
navNodeCreationInfo.Url = "http://MyServer/sites/MySiteCollection/MyTargetListWebSite/Lists/MyTargetList/AllItems.aspx";

collChildNavNode.Add(navNodeCreationInfo);

clientContext.ExecuteQuery();
Dim clientContext As New ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite")
         
Dim collNavNode As NavigationNodeCollection = clientContext.Web.Navigation.QuickLaunch
         
clientContext.Load(collNavNode)
clientContext.ExecuteQuery()
         
Dim collChildNavNode As NavigationNodeCollection = collNavNode(1).Children
         
clientContext.Load(collChildNavNode)
clientContext.ExecuteQuery()
         
Dim navNodeCreationInfo As New NavigationNodeCreationInformation()
         
navNodeCreationInfo.PreviousNode = collChildNavNode(0)
navNodeCreationInfo.Title = "My Navigation Node"
navNodeCreationInfo.Url = "http://MyServer/sites/MySiteCollection/MyTargetListWebSite/Lists/MyTargetList/AllItems.aspx"
         
collChildNavNode.Add(navNodeCreationInfo)
         
clientContext.ExecuteQuery()
function getNavNodes() {
    this.clientContext = new SP.ClientContext('/sites/MySiteCollection/MyWebSite');
    this.collNavNode = clientContext.get_web().get_navigation().get_quickLaunch();

    clientContext.load(collNavNode);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.getChildNavNodes), Function.createDelegate(this, this.onQueryFailed));
}

function getChildNavNodes() {

    this.collChildNavNode = collNavNode.get_item(1).get_children();
    clientContext.load(collChildNavNode);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.createNavNode), Function.createDelegate(this, this.onQueryFailed));
}

function createNavNode() {

    var navNodeCreationInfo = new SP.NavigationNodeCreationInformation();
    navNodeCreationInfo.set_previousNode(collChildNavNode.get_item(0));
    navNodeCreationInfo.set_title('My Navigation ECMA Node');
    navNodeCreationInfo.set_url('http://MyServer/sites/MySiteCollection/MyTargetListWebSite/Lists/MyTargetList/AllItems.aspx');

    collChildNavNode.add(navNodeCreationInfo);

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

function onQuerySucceeded() {

    alert("Created navigation node.");
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

В предыдущем примере создается ссылка на другой веб-сайт в семействе сайтов. Чтобы создать внешнюю ссылку для расположения вне семейства сайтов, задайте свойству IsExternal (JavaScript: IsExternal) объекта NavigationNodeCreationInformation (JavaScript: NavigationNodeCreationInformation) значение true перед вызовом метода Add(NavigationNodeCreationInformation) (JavaScript: add(parameters)).

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

См. также

Концепции

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

Создание, обновление и удаление списков

Практическое руководство. Создание, обновление и удаление элементов списка

Практическое руководство. Работа с пользователями и группами

Удостоверение и объектная модель иерархии

Контекст клиента как центральный объект

Клиентские объекты, объекты значений и скалярные свойства

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

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

Различия управляемой объектной модели и объектной модели ECMAScript

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

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

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

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

Использование объектной модели управляемого клиента SharePoint Foundation 2010

Центр ресурсов объектной модели клиента (Возможно, на английском языке)