2015-03-23 5 views
0

Я реализовал метод формы, как описано в Need help implementing an Orchard CMS Shape Method, но теперь я столкнулся с проблемой, когда пытаюсь захватить и вернуть содержимое с помощью запроса.Нужна помощь в возврате произвольного содержимого из метода формы в Orchard CMS

Метод формы работы, но если добавить следующую строку, она затем выдает ошибку в поиске вид:

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

Я могу сделать ошибку уйти, создавая вид, что смотрит for, но затем это переопределяет текст, который я пытаюсь вернуть в методе формы.

Как бы я мог захватить элемент контента из Orchard и вернуть текст из элементов (ов) с помощью метода моей формы, а также обходить возникшую ошибку представления?

Я добавил необходимые Usings и ссылки на IContentManager и т.д.

Update

Ошибка я получаю «Ссылка на объект не указывает на экземпляр объекта.»

Вот полный трассировки стека: http://pastebin.com/fB8bYtML

+0

Просьба указать возникшую ошибку. – devqon

+0

Извините, что и за задержку - моя ошибка была добавлена. – jcrcj

ответ

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)); 
+0

Имейте в виду, что запросы LIKE имеют тенденцию быть очень медленными. –

+0

Это, похоже, дает мне ту же ошибку, о которой я говорил выше. – jcrcj

+0

У вас есть оператор присваивания _contentManager = contentManager в конструкторе контроллера? Вы пытались использовать HqlQuery? –

0

Может быть, вам не хватает .list() в конце запроса. Прямо сейчас я думаю, что вы возвращаете объект IQueryable, чтобы дать вам возможность добавлять дополнительные фильтры в запрос. Вам нужно добавить .List() в конец запроса для выполнения запроса в базе данных и вернуть IEnumerable.

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