2012-05-23 18 views
6

¿Podría alguien darme un ejemplo de cómo agregar programáticamente una propiedad a un tipo de documento existente en Umbraco CMS? Esto es lo que he intentado:¿Cómo agregar una propiedad a un tipo de documento en Umbraco desde el código?

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

Pero es una excepción:

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

¿Alguna idea?

+0

se olvidó de mencionar - Estoy usando Umbraco 4.7.1 –

Respuesta

4

Me las arreglé para solucionarlo. El sitio web fue recientemente actualizado de Umbraco 4.5 a Umbraco 4.7.1, por lo que los dll tuvieron que ser reemplazados por los más recientes. En la versión anterior de Umbraco, el tipo de devolución del método era public void AddPropertyType mientras que el nuevo public PropertyType AddPropertyType. Aparentemente durante la actualización no se copió el nuevo cms.dll, así que lo copié de una solución limpia de Umbraco 4.7.1, cambié el código para recibir el tipo de devolución y me ayudó.

espacios de nombres necesarios:

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

Así que el código final (suponiendo asambleas correctas están referenciados):

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

Ese código me parece bien, debería funcionar.

Asegúrese de que su primera línea realmente está devolviendo un documentype, no nulo.

Además, ¿tiene los 'usos' adecuados en su lugar, necesitará al menos algunos de estos?

using umbraco.cms.businesslogic.web; 
using umbraco.NodeFactory; 
using umbraco.cms.businesslogic.member; 
using umbraco.cms.businesslogic.datatype; 
Cuestiones relacionadas