uSiteBuilder 3.0加载DocumentType字段,但不加载DynamicNode字段

时间:2013-09-15 10:02:25

标签: umbraco umbraco6

我在使用Umbraco 6.1.5和uSiteBuilder 3.0.0时遇到了问题,当我使用ContentHelper实例化强类型DocumentType时,DocumentType中定义的所有字段都被加载到对象中,但像{ {1}},NameId未加载(它们为空,空或0)。

据我所知,因为负责实例化的Children方法正在调用ContentHelper的空构造函数。有什么我想念的吗?我应该在我的文档类型上定义构造函数吗?

这是我的DocumentType:

DynamicNode

以防它有用,这是调用空构造函数的代码部分:

namespace USiteBuilderTest.DocumentTypes
{
    [DocumentType]
    public class Home : DocumentTypeBase
    {
        [DocumentTypeProperty(Name = "Field 1")]
        public string Field1 { set; get; }

        [DocumentTypeProperty(Name = "Field 2")]
        public string Field2 { set; get; }

        [DocumentTypeProperty(Name = "Field 3")]
        public string Field3 { set; get; }
    }
}

2 个答案:

答案 0 :(得分:0)

尽管Codeplex项目描述清楚地说明分支“3.0.0”应该与Umbraco v6一起使用,但实际上应该使用一个特定的v6分支(标记为“version6API”)。

答案归功于Vladan Ostojic,他在Umbraco论坛上回答了这个问题:

http://our.umbraco.org/projects/developer-tools/usitebuilder/usitebuilder-support/44774-uSiteBuilder-30-loads-DocumentType-fields-but-not-the-DynamicNode-fields?p=0#comment161011

答案 1 :(得分:0)

我也遇到过这个问题。解决方案可以是添加一个空构造函数和一个nodeid作为输入的构造函数。像这样:

namespace USiteBuilderTest.DocumentTypes
{
    [DocumentType]
    public class Home : DocumentTypeBase
    {
        public Home() {}

        public Home(int nodeId) : base(nodeId) { }

        [DocumentTypeProperty(Name = "Field 1")]
        public string Field1 { set; get; }

        [DocumentTypeProperty(Name = "Field 2")]
        public string Field2 { set; get; }

        [DocumentTypeProperty(Name = "Field 3")]
        public string Field3 { set; get; }
    }
}

这对我有用。