有人能举例说明如何以编程方式将属性添加到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)'.
有什么想法吗?
答案 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;