6

谁能给我一个示例,说明如何以编程方式将属性添加到 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)'.

有任何想法吗?

4

2 回答 2

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");
于 2012-05-24T10:27:25.293 回答
0

该代码对我来说看起来不错,它应该可以工作。

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

此外,您是否有适当的“使用”,您至少需要其中一些?

using umbraco.cms.businesslogic.web;
using umbraco.NodeFactory;
using umbraco.cms.businesslogic.member;
using umbraco.cms.businesslogic.datatype;
于 2012-05-23T17:49:33.693 回答