2010-07-13 7 views
4

Je crée un nouveau site sharepoint à partir d'un composant WebPart Silverlight. J'utilise le modèle ClientContext et il fonctionne très bien pour un modèle de site d'équipe (STS # 0). Je dois créer un NOUVEAU site à partir d'un modèle de site CUSTOM que j'ai créé, mais je ne sais pas comment référencer ce modèle en spécifiant un modèle Web par nom et en ne pouvant référencer qu'un des modèles standard.Sharepoint 2010 - Créer un site à partir d'un code en utilisant un modèle de site personnalisé

Voici mon code:

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

Répondre

6

boucle à travers tous vos modèles disponibles, vous trouverez que le nom du modèle personnalisé a la guid devant elle: {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); 
    } 
} 
Questions connexes