Content Management Server è il sistema di "Content Management" della Microsoft basato su template; uno strumento decisamente potente che permette agli sviluppatori di preparare delle pagine pre-definite, con un layout di base, pronte da essere "riempite" da utenti con relativi permessi, in maniera del tutto visuale.
Lo sviluppatore non deve far altro che definire dei PlaceHolder all'interno dei suoi template, e definirne il tipo di contenuto. Sarà poi l'utente finale a creare la nuova pagina (chiamata "Posting") e ad inserirci il contenuto vero e proprio (che può essere testo, immagini o allegati di vario genere ...).

Una funzionalità che a me personalmente è servita molto, è quella di recuperare il contenuto di un placeholder presente in un differente posting da quello corrente. Per esempio ci potrebbe servire di stampare in home page un testo che è presente anche in un altra sezione del sito.
Per far ciò, bisogna recuperare il posting che contiene il placeholder scelto, creare un placeholder "astratto" (nel senso che ci serve solamente per recuperare il contenuto di quello prescelto) e recuperarne al suo interno, tutte le informazioni che ci servono (nel nostro caso, ci basta stampare il contenuto della proprietà "Html").

VB.NET

Dim posting As Posting

'path del posting da recuperare
Dim path As String = "Channels/SubChannel/PostingName"
posting = Me.CmsContext.Searches.GetByPath(path)

'Creo un placeholder astratto Dim abstractPlaceHolder As Extensions.Placeholders.HtmlPlaceholder

'Recupero il placeholder scelto, tramite il nome della sua definizione abstractPlaceHolder = posting.Placeholders("PlaceHolderDefinition_name")

If Not abstractPlaceHolder Is Nothing Then
label.InnerHtml = abstractPlaceHolder.Html
End If

C#
Posting posting;


//path del posting da recuperare string path = "Channels/SubChannel/PostingName";
posting = this.CmsContext.Searches.GetByPath(path)

//Creo un placeholder astratto Extensions.Placeholders.HtmlPlaceholder abstractPlaceHolder;

//Recupero il placeholder scelto, tramite il nome della sua definizione abstractPlaceHolder = posting.Placeholders["PlaceHolderDefinition_name"];

if(abstractPlaceHolder != null)
label.InnerHtml = abstractPlaceHolder.Html;

E' da notare che questa tecnica ci da molti margini di personalizzazione del nostro sito CMS, sopratutto per quanto riguarda la dinamicità del contenuto, infatti, se questo viene cambiato nel posting "remoto", verrà automaticamente aggiornato anche nel posting corrente.