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

本文关键字:文档 类型 添加 属性 Umbraco 代码 | 更新日期: 2023-09-27 18:35:18

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

有什么想法吗?

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

我设法修复了它。该网站最近从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");

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

确保你的第一行实际上返回了一个文档,而不是空。

另外,您是否有适当的"用途",您至少需要其中的一些?

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