如何从代码中向Umbraco中的文档类型添加属性?

时间:2012-05-23 16:52:20

标签: c# asp.net .net umbraco

有人能举例说明如何以编程方式将属性添加到Umbraco CMS中的现有文档类型中吗?这就是我试过的:

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

但它引发了一个例外:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我设法解决了这个问题。该网站最近从Umbraco 4.5升级到Umbraco 4.7.1,所以dll必须被更新的网站取代。在旧版本的Umbraco中,方法的返回类型为public void AddPropertyType,而新的public PropertyType AddPropertyType。显然在升级过程中没有复制新的cms.dll,所以我从一个干净的Umbraco 4.7.1解决方案中复制了它,更改了代码以接收返回类型并且它有所帮助。

必需的名称空间:

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

所以最后的代码(假设引用了正确的程序集):

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

答案 1 :(得分:0)

该代码对我来说很好,它应该可行。

确保您的第一行实际上返回的是文档类型,而不是null。

另外,你是否有适当的'使用',你至少需要其中一些?

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