果园从类型ContentItem获取字段
问题描述:
我有一个名为Event的内容项,它具有一个称为Section的分类字段,该字段通过内容定义区域附加。果园从类型ContentItem获取字段
什么是最简单如何从备用内容中的内容检索Section字段?我的替代不是覆盖了一个事件,所以Model.ContentItem是不可能的。在我的备用内部,我的Event对象实例是ContentItem类型的,我通过ContentManager进行检索。
这是我在此刻做什么:
ContentItem content = WorkContext.Resolve<IContentManager>().Get(id);
var = content.Parts.ElementAt(13).Fields.ElementAt(0);
我意识到,在上面的代码中该指数可能会改变,我能想到这样做的唯一的另一种方式是通过将Lambda表达式整数的位置。
content.Parts.ElementAt(13)返回ContentPart类型的对象 content.Parts.ElementAt(13).Fields.ElementAt(0)返回TaxonomyField类型的对象。而我相信我需要TermPart?
如果不能以简单的方式实现,为什么执行这样一个简单的任务很困难?
预先感谢您。
答
首先你不需要模板上的ContentManager。
在模型上您有ContentItem。你可以这样回顾这个领域:
var contentItem = Model.ContentItem;
var terms = contentItem.Event.TaxonomyFieldName.Terms;
就条款而言,您拥有ContentItem的条款。
嗨Martinbc,谢谢你的回答。虽然我必须使用ContentManager,因为我正在检索当前附加到当前URL的内容。备用的Model.ContentItem不是一个事件。 – Andrew
然后你应该写一个自定义Shape(http://docs.orchardproject.net/Documentation/Accessing-and-rendering-shapes)阅读创建一个形状方法。使用该方法的ContentManager,而不是在视图 – mberacochea
更多信息在这里http://chrisbower.com/2011/09/12/shape-methods-as-an-alternative-to-widgets/ – mberacochea