Una webpart page è una delle possibili pagine che possiamo creare all'interno di un sito SharePoint. Queste pagine, che esistono fin dalla versione 2003 del prodotto, si differenziano dalle application page in quanto permettono la modifica del proprio contenuto tramite il browser (tramite le varie webpart zone).
Dovete sapere che tramite il modello ad oggetti di SharePoint potete tranquillamente creare una di queste pagine, conoscendo però a priori la tipologia di template che volete utilizzare.
Ecco qua il codice che dovete scrivere per raggiungere questo obbiettivo:

SPWeb web = SPContext.Current.Web;


//creo una document library per contentere la mia nuova webpart page Guid listId = web.Lists.Add("Pages", "", SPListTemplateType.DocumentLibrary);
SPList list = web.Lists[listId];
list.OnQuickLaunch = false;
list.Update();

//creo la webpart page string postInformation = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<Method>" +
"<SetList Scope=\"Request\">" + listId + "</SetList>" +
"<SetVar Name=\"ID\">New</SetVar>" +
"<SetVar Name=\"Cmd\">NewWebPage</SetVar>" +
"<SetVar Name=\"Type\">WebPartPage</SetVar>" +
"<SetVar Name=\"WebPartPageTemplate\">2</SetVar>" +
"<SetVar Name=\"Title\">TITOLO PAGINA</SetVar>" +
"<SetVar Name=\"Overwrite\">true</SetVar>" +
"</Method>";
string processBatch = web.ProcessBatchData(postInformation);

Così facendo vedrete una nuova webpart page comparire all'interno della document library specificata (nel nostro caso, abbiamo creato da zero la library "Pages"), con il template n°2.
L'elenco dei template da poter utilizzare è lo stesso che trovate nella pagina di creazione di una nuova webpart page e, se volete conoscere i vari identificativi di ogni template (in generale seguono l'ordine dall'1 all'8), potete trovare le relative pagine fisiche al seguente percorso:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\[LCID]\STS\DOCTEMP\SMARTPGS

Questa tecnica è molto utile sia in fase di installazione della nostra applicazione ma soprattutto quando stiamo sviluppando una soluzione di tipo Sandbox, dove non possiamo sfruttare le funzionalità di un'application page normale e dobbiamo dotare in egual modo la nostra applicazione di intere pagine dedicate a funzionalità specifiche. Questo perchè sia la classe SPWeb che il metodo ProcessBatchData sono disponibili all'interno del subset di membri che possono essere utilizzati in una soluzione Sandbox.