我已经实现了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
答案 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();