Получить термины таксономии из ContentItem в Orchard

Я пытаюсь получить полный список терминов таксономии из ContentItem, делая что-то вроде этого:

var product = Services.ContentManager.Get<ContentItem>(33);

foreach (var term in product.TermsPart.Terms.Where(x => x.Field == "MyIndex"))
{
    ...
}

Кто-нибудь может мне помочь?

Я читал, что это возможно, используя для этого динамическое:

dynamic product = Services.ContentManager.Get<ContentItem>(33);

foreach (var term in product.MyIndex.Terms)
{
    ...
}

но я не могу найти правильный синтаксис!


person danyolgiax    schedule 03.11.2013    source источник


Ответы (1)


Лучше всего это сделать с помощью службы ITaxonomyService (http://orchardtaxonomies.codeplex.com/SourceControl/latest#Services/ITaxonomyService.cs)

Вставьте его в конструктор вашего класса (контроллер, зависимость или что-то еще):

  //Note that I didn't try this code
    public SomeController(ITaxonomyService taxonomyService){
         var product = Services.ContentManager.Get<ContentItem>(33);
         var terms = taxonomyService.GetTermsForContentItem(product.Id); //Or just 33

   }
person jmgomez    schedule 20.11.2013