需要帮助从Orchard CMS中的形状方法返回任意内容

时间:2015-03-23 16:02:12

标签: orchardcms orchardcms-1.7

我已经实现了Need help implementing an Orchard CMS Shape Method中描述的形状方法,但是当我尝试使用查询抓取并返回内容时,我遇到了问题。

shape方法有效,但如果我添加以下行,则会在查找视图时产生错误:

var items = _contentManager.Query<TitlePart, TitlePartRecord>().Where(t => t.Title.Contains("Orchard"));

我可以通过创建它正在查找的视图来消除错误,但是这会覆盖我尝试在shape方法中返回的文本。

如何使用我的shape方法从Orchard中获取内容项并从项目中返回文本,以及绕过正在生成的视图错误?

我已经添加了必要的使用和对IContentManager等的引用

更新

我得到的错误是“对象引用未设置为对象的实例。”

以下是完整的堆栈跟踪:http://pastebin.com/fB8bYtML

2 个答案:

答案 0 :(得分:0)

可能内容查询不支持String.Contains方法(Content Query使用NHibernate.Linq.Query)。 您可以使用Hql Query

var items = _contentManager.HqlQuery().Where(
    a => a.ContentPartRecord<TitlePartRecord>(),
    p => p.Like("Title", "Orchard", Orchard.ContentManagement.HqlMatchMode.Anywhere));

答案 1 :(得分:0)

可能是您在查询结尾处缺少.List()。现在我认为你正在返回一个IQueryable对象,使你能够为查询添加更多的过滤器。您需要将.List()添加到查询的末尾以在数据库中执行查询并返回IEnumerable。

var items = _contentManager.Query<TitlePart, TitlePartRecord>().Where(t => t.Title.Contains("Orchard")).List();