【问题标题】:Orchard getting the field from type ContentItemOrchard 从 ContentItem 类型中获取字段
【发布时间】:2014-01-24 07:53:49
【问题描述】:

我有一个名为 Event 的内容项,它通过内容定义区域附加了一个名为 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?

如果不能以简单的方式实现,为什么这么简单的任务就这么难?

提前谢谢你。

【问题讨论】:

    标签: orchardcms orchardcms-1.7


    【解决方案1】:

    首先,您不需要模板上的 ContentManager。

    在模型上,您有 ContentItem。您可以像这样检索该字段:

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

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

    【讨论】:

    • 您好 Martinbc,感谢您的回答。虽然我必须使用 ContentManager,因为我正在检索当前附加到当前 url 的内容。替代的 Model.ContentItem 不是事件。
    • 那么你应该编写一个自定义形状 (docs.orchardproject.net/Documentation/…) 阅读创建形状方法。在该方法中使用 ContentManager,而不是在视图中
    • 更多信息在这里chrisbower.com/2011/09/12/…
    • 感谢您的回答,但它没有回答我的问题。我不想写自定义形状。我只是想知道如何使用原始问题中的方法访问字段。
    • 您可以使用相同的,将事件内容项转换为动态并使用 content.Event.TaxonomyFieldName.Terms。
    猜你喜欢
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多