2014-01-24 68 views
1

我有一个名为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?

如果不能以简单的方式实现,为什么执行这样一个简单的任务很困难?

预先感谢您。

回答

2

首先你不需要模板上的ContentManager。

在模型上您有ContentItem。你可以这样回顾这个领域:

var contentItem = Model.ContentItem; 
var terms = contentItem.Event.TaxonomyFieldName.Terms; 

就条款而言,您拥有ContentItem的条款。

+0

嗨Martinbc,谢谢你的回答。虽然我必须使用ContentManager,因为我正在检索当前附加到当前URL的内容。备用的Model.ContentItem不是一个事件。 – Andrew

+0

然后你应该写一个自定义Shape(http://docs.orchardproject.net/Documentation/Accessing-and-rendering-shapes)阅读创建一个形状方法。使用该方法的ContentManager,而不是在视图 – mberacochea

+0

更多信息在这里http://chrisbower.com/2011/09/12/shape-methods-as-an-alternative-to-widgets/ – mberacochea