2009-06-24 10 views
7

Ho un paio di librerie di documenti che sono solo librerie standard - nessun tipo di contenuto personalizzato associato o altro. Sto cercando di aggiungerle sottocartelle e in alcuni casi semplicemente non funziona.SharePoint SPFolder.SubFolders.Add non aggiunge effettivamente una cartella

SPFolder parent = library.RootFolder; 
SPFolder child = parent.SubFolders.Add(subfoldername); 
parent.Update(); 
bool exists = child.Exists; // This is false 

Quando provo ad aggiungere una sottocartella denominata M1 Spectrum CRC w-out CMN67 E02_files tramite codice si riesce a aggiungere la cartella, anche se il metodo Add sembra di eseguire con successo. Quando provo ad aggiungere una cartella di questo nome esatto tramite il browser-based elenco SharePoint UI di serie, io con successo ottenere una cartella aggiunto ma ha un nome diverso:

M1 Spectrum CRC w-out CMN67 E02_files_

Nota il trattino di sottolineatura finale nella cartella creata da SharePoint. Questo è un nome di cartella legale di Windows e non contiene alcun carattere html-unfriendly. Allora, che succede con questo? Mi manca qualcosa di ovvio?

risposta

8

Questo perché una cartella che termina con _files è un tipo speciale creato dalle app del client di MS Office quando si salva un documento come HTML. Le app di Office salvano tutti i file di risorse della pagina Web come immagini e file css in questa cartella. Ma non può essere manipolato attraverso il modello a oggetti di SharePoint - un vero casino se me lo chiedi! L'unica soluzione per te è NON creare cartelle che finiscono con _files.

+1

Grazie ... sì, che è un po goffo. Rende inutilmente difficile importare report basati su HTML quando i report hanno strutture di cartelle con nomi che terminano in _files. Oh bene. Almeno ora la ragione è più chiara! Grazie! –

+1

Cose divertenti per MS! :) Scommetto che questo non potrebbe essere vero. .. ma era. Che scherzo! Che soluzione per implementare una cosa del genere - perché non semplicemente non lo permettono invece. –

+0

Sì, non è divertente –

-1

TRY

SPWeb site = new SPSite(sharepointURL).OpenWeb(); 
site.AllowUnsafeUpdates = true;