Listeninstanz im SharePoint-Add-In-Objektmodell
Der Ansatz, den Sie zum Erstellen von Listeninstanzen verwenden, ist im neuen SharePoint-Add-In-Modell anders als bei voll vertrauenswürdigem Code. In einem typischen FTC-Szenario (Full Trust Code) bzw. farm solution wurden Listeninstanzen mit deklarativem Code erstellt und über SharePoint-Lösungen bereitgestellt.
In einem SharePoint-Add-In-Modellszenario wird das Remotebereitstellungsmuster verwendet, um Listeninstanzen zu erstellen.
Richtlinien auf hoher Ebene
Als Faustregel möchten wir die folgenden allgemeinen Richtlinien zum Erstellen von Listeninstanzen bereitstellen.
- Verwenden Sie das Remotebereitstellungsmuster, um Listeninstanzen zu erstellen.
- Verwenden Sie keinen deklarativen Code (elements.xml), um Listeninstanzen zu erstellen.
Erste Schritte
Im folgenden O365-PnP-Codebeispiel und -Video wird veranschaulicht, wie Sie ein SharePoint-Add-In erstellen, das eine Benutzeroberfläche bereitstellt, mit der Endbenutzer neue Dokumentbibliotheken erstellen können. Außerdem wird veranschaulicht, wie eine Dokumentbibliothek mit bestimmten Konfigurationen erstellt wird, die zusammen eine Vorlage darstellen. In diesem Beispiel finden Sie den Code, der eine Liste instance erstellt.
Das folgende Video führt Sie durch das Codebeispiel.
Verwenden Sie die AddList-Methode im SharePoint-CSOM, um eine Liste instance über das Remotebereitstellungsmuster zu erstellen. Der folgende Code stammt aus dem ECM. DocumentLibraries (O365-PnP-Codebeispiel) veranschaulicht die Vorgehensweise.
private void CreateLibrary(ClientContext ctx, Library library, string associateContentTypeID)
{
if (!ctx.Web.ListExists(library.Title))
{
// Create List Instance
ctx.Web.AddList(ListTemplateType.DocumentLibrary, library.Title, false);
List _list = ctx.Web.GetListByTitle(library.Title);
//Set Description
if(!string.IsNullOrEmpty(library.Description))
{
_list.Description = library.Description;
}
//Turn on versioning
if(library.VerisioningEnabled) {
_list.EnableVersioning = true;
}
//Turn on Content Types
_list.ContentTypesEnabled = true;
_list.Update();
//Add Content Type to List
ctx.Web.AddContentTypeToListById(library.Title, associateContentTypeID, true);
//Remove the default Document Content Type
_list.RemoveContentTypeByName(ContentTypeManager.DEFAULT_DOCUMENT_CT_NAME);
ctx.Web.Context.ExecuteQuery();
}
}
Im folgenden Codebeispiel wird veranschaulicht, wie Sie eine Liste instance mit der SharePoint-REST-API erstellen. Dieses Beispiel stammt aus der REST-API-Referenz zu Listen und Listenelementen (MSDN-Artikel)
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web/lists
?@target='<host web url>'",
method: "POST",
body: "{ '__metadata': { 'type': 'SP.List' }, 'AllowContentTypes': true, 'BaseTemplate': 100,
'ContentTypesEnabled': true, 'Description': 'My list description', 'Title': 'Test title' }",
headers: { "content-type": "application/json;odata=verbose" },
success: successHandler,
error: errorHandler
});
Verwandte Links
- Rest-API-Referenz zu Listen und Listenelementen (MSDN-Artikel)
- Listendefinitionen/Listenvorlagen (SharePoint-Add-In-Modellrezept)
- Dokument- und Listenvorlagen mit App-Modell (O365 PnP Video)
- Leitfadenartikel unter https://aka.ms/OfficeDevPnPGuidance
- Verweise in MSDN unter https://aka.ms/OfficeDevPnPMSDN
- Videos bei https://aka.ms/OfficeDevPnPVideos
PnP-Beispiele
- ECM. DocumentLibraries (O365-PnP-Codebeispiel)
- Beispiele und Inhalte unter https://github.com/SharePoint/PnP
Gilt für
- Office 365 mit mehreren Mandanten (MT)
- Office 365 dediziert (D) teilweise
- SharePoint 2013 lokal – teilweise
Muster für dedizierte und lokale Umgebungen sind identisch mit SharePoint-Add-In-Modelltechniken, aber es gibt Unterschiede bezüglich der verwendbaren Technologien.