使用Ektron ContentTypes创建新的smartform数据

时间:2013-01-29 21:28:12

标签: ektron

Ektron 8.0.1 SP1

我正在使用SmartForms和内容类型来读取(并希望写入)数据。我可以读取数据,但现在我正在尝试编写类似于以下内容的新记录。

ContentTypeManager<member> contentTypeManager = new ContentTypeManager<member>();
ContentType<member> newmem = new ContentType<member>();

newmem.SmartForm.details.field1 = "Chuck"; // This line throws 'Object reference not set to an instance of an object.' error
newmem.SmartForm.details.field2 = "Norris";
contentTypeManager.Update(newmem);

我收到错误“对象引用未设置为对象的实例”。对于第一个分配线。我错过了什么?

由于Ektron网站经过重新设计,我无法在8.0.1的ContentTypes上找到好的文档。

THX。

2 个答案:

答案 0 :(得分:1)

感谢您澄清,要将内容添加到分配了smartform的文件夹,基本代码块应该让您入门:(注意:内容的Html属性只是与您创建的架构匹配的xml)

Ektron.Cms.Framework.Content.ContentManager cmanager = new Cms.Framework.Content.ContentManager();
Ektron.Cms.ContentData cdata = new ContentData();
cdata.FolderId = 0;
cdata.XmlConfiguration.Id = 0; //SMARTFORM ID HERE
cdata.Html = "<root><field1>field1 value</field1><field2>field2 value</field2></root>";
cmanager.Add(cdata);

答案 1 :(得分:1)

您可以更新ContentTypes.cs以包含Add方法。只需复制更新方法,然后将contentManager.Update更改为contentManager.Add

    public void Add(ContentType<T> contentType)
    {
        Initialize();
        contentType.Content.Html = Ektron.Cms.EkXml.Serialize(typeof(T), contentType.SmartForm);
        contentManager.Add(contentType.Content);
    }

不幸的是,contentManager.Add会返回void。理想情况下,它应该返回新的内容ID。