2012-05-23 5 views
6

Qualcuno potrebbe darmi un esempio di come aggiungere in modo programmatico una proprietà a un tipo di documento esistente in Umbraco CMS? Questo è quello che ho provato:Come aggiungere una proprietà a un tipo di documento in Umbraco dal codice?

var dt = DocumentType.GetByAlias("TestDocType"); 
dt.AddPropertyType(new DataTypeDefinition(-49),"testprop", "test prop"); 

Ma viene generata un'eccezione:

Method not found: 'Void umbraco.cms.businesslogic.ContentType.AddPropertyType(umbraco.cms.businesslogic.datatype.DataTypeDefinition, System.String, System.String)'. 

Tutte le idee?

+0

dimenticato di dire - sto usando Umbraco 4.7.1 –

risposta

4

Sono riuscito a risolvere il problema. Il sito Web è stato recentemente aggiornato da Umbraco 4.5 a Umbraco 4.7.1, quindi è stato necessario sostituire i dll con quelli più recenti. Nella versione precedente di Umbraco il tipo di ritorno del metodo era public void AddPropertyType mentre il nuovo public PropertyType AddPropertyType. Apparentemente durante l'aggiornamento il nuovo cms.dll non è stato copiato, quindi l'ho copiato da una soluzione Umbraco 4.7.1 pulita, ho cambiato il codice per ricevere il tipo di reso e mi ha aiutato.

spazi dei nomi richiesti:

using umbraco.cms.businesslogic.datatype; 
using umbraco.cms.businesslogic.web; 

Quindi il codice finale (assumendo assemblee corrette si fa riferimento):

var dt = DocumentType.GetByAlias("TestDocType"); 
var pType = dt.AddPropertyType(new DataTypeDefinition(-49),"testprop", "test prop"); 
0

Questo codice mi sembra soddisfacente, dovrebbe funzionare.

Assicurarsi che la prima riga stia effettivamente restituendo un documento, non null.

Inoltre, hai gli 'usi' corretti in atto, ti serviranno almeno alcuni di questi?

using umbraco.cms.businesslogic.web; 
using umbraco.NodeFactory; 
using umbraco.cms.businesslogic.member; 
using umbraco.cms.businesslogic.datatype; 
Problemi correlati