使用Core Service API,有没有办法检索组件的字段而不必求助于查询底层XML或使用第三方(?)包装类?
使用TOM.NET API时非常简单
Tridion.ContentManager.ContentManagement.Component component = [get a component];
var componentFields = new Tridion.ContentManager.ContentManagement.Fields.ItemFields(component.Content, component.Schema);
var summary = ((Tridion.ContentManager.ContentManagement.Fields.TextField)componentFields["summary"]).Value;
但是当我开始使用Core Service API时,似乎有点复杂,因为没有Tridion.ContentManager.ContentManagement.Fields.ItemFields
类来包围component.Content
。
我理解Frank van Puffelen编写了一组classes来实现这个包装器功能,但是我对使用SDL没有正式支持的代码有点警惕(或者是吗?)。
目前在我看来,使用Core Service API从组件中优雅地检索字段的功能尚未完全实现。我希望我被证明是错的!
答案 0 :(得分:4)
如果您正在寻找一个官方包装器来访问ComponentData内容,那么就没有这样的东西。
Frank的课程不受官方支持,它是开源代码(在MIT License下),但它是使用支持的API构建的,所以你应该可以使用它。 / p>
另一方面,它不是如此广泛的代码,所以如果你有问题,你可以尝试自己解决它。正如其他开发人员所做的那样,正如您在页面评论中看到的那样。
答案 1 :(得分:3)
这个问题之前已被问过,实际上不止一次...... 例如:How to set content to a component without loading XML in SDL Tridion using core services?。