Sharepoint 2010 - создание сайта из кода с использованием пользовательского шаблона сайта - PullRequest
4 голосов
/ 13 июля 2010

Я создаю НОВЫЙ сайт sharepoint из веб-части silverlight.Я использую модель ClientContext, и она отлично работает для шаблона сайта группы (STS # 0).Мне нужно создать НОВЫЙ сайт из созданного мной ПОЛЬЗОВАТЕЛЬСКОГО шаблона сайта, но я не знаю, как ссылаться на этот шаблон, чтобы указать веб-шаблон, которым он является по имени и может ссылаться только на один из стандартных шаблонов.

Вот мой код:

  string siteUrl = App.RootSite;
  string siteDescription = project.projectName; // "A new project site.";
  int projectLanguage = 1033;
  string projectTitle = project.projectName; // "Project Web Site";
  string projectUrl = project.projectURL; //"projectwebsite";
  bool projectPermissions = false;
  string webTemplate = "STS#0"; //TODO: reference custom site template

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

    WebCreationInformation webCreateInfo = new WebCreationInformation();
    webCreateInfo.Description = siteDescription;
    webCreateInfo.Language = projectLanguage;
    webCreateInfo.Title = projectTitle;
    webCreateInfo.Url = projectUrl;
    webCreateInfo.UseSamePermissionsAsParentSite = projectPermissions;
    webCreateInfo.WebTemplate = webTemplate;

    oNewWebsite = oWebsite.Webs.Add(webCreateInfo);

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

    clientContext.ExecuteQueryAsync(onQuerySucceeded, onQueryFail);

  }
  catch (Exception e)
  {
    MessageBox.Show(e.Message);
  }

Ответы [ 2 ]

6 голосов
/ 14 июля 2010

Перебирая все доступные шаблоны, вы обнаружите, что перед именем пользовательского шаблона есть guid: {A13D0D34-EEC2-4BB5-A563-A926F7F9681A} # ProjectSiteTemplate.

    ClientContext clientContext = new ClientContext(siteUrl);
    Web oWebsite = clientContext.Web;
    WebTemplateCollection templates = oWebsite.GetAvailableWebTemplates(1033, true);

    clientContext.Load(templates);
    clientContext.ExecuteQueryAsync(onTemplateSucceeded, null);

private void onTemplateSucceeded(object sender, ClientRequestSucceededEventArgs args)
{
    UpdateUIMethod updateUI = ShowTemplates;
    this.Dispatcher.BeginInvoke(updateUI);
}

private void ShowTemplates()
{
    foreach (WebTemplate template in templates)
    {
        MessageBox.Show(template.Id + " : "
          + template.Name + " : "
          + template.Title);
    }
}
0 голосов
/ 21 ноября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...