Orchard получает поле из типа ContentItem

У меня есть элемент контента под названием «Событие», к которому есть поле таксономии «Раздел», прикрепленное через область определения контента.

Каков самый простой способ получить поле "Раздел" из содержимого в альтернативе? Мой альтернативный не переопределяет событие, поэтому Model.ContentItem невозможен. В моем альтернативном случае мой экземпляр объекта Event имеет тип ContentItem, который я извлекаю через ContentManager.

Вот что я делаю в данный момент:

ContentItem content = WorkContext.Resolve<IContentManager>().Get(id);
var = content.Parts.ElementAt(13).Fields.ElementAt(0);

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

content.Parts.ElementAt(13) возвращает объект типа ContentPart content.Parts.ElementAt(13).Fields.ElementAt(0) возвращает объект типа TaxonomyField. Принимая во внимание, что я считаю, что мне нужен TermPart?

Если этого нельзя достичь простым способом, почему так сложно выполнить такую ​​простую задачу?

Заранее спасибо.


person Andrew    schedule 24.01.2014    source источник


Ответы (1)


Во-первых, вам не нужен ContentManager в шаблоне.

В модели у вас есть ContentItem. Вы можете восстановить поле следующим образом:

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

На условиях у вас есть условия ContentItem.

person mberacochea    schedule 24.01.2014
comment
Привет Martinbc, спасибо за ваш ответ. Хотя я должен использовать ContentManager, поскольку я получаю контент, который в настоящее время прикреплен к текущему URL-адресу. Model.ContentItem альтернативного объекта не является событием. - person Andrew; 25.01.2014
comment
Затем вы должны написать собственную форму (docs.orchardproject.net/Documentation/) прочитайте Создание метода формы. Используйте ContentManager в этом методе, а не в представлении - person mberacochea; 25.01.2014
comment
Подробнее здесь chrisbower.com/2011/ 12.09. - person mberacochea; 25.01.2014
comment
Я ценю ваш ответ, но он не отвечает на мой вопрос. Я не хочу писать нестандартную форму. Я просто хочу знать, как получить доступ к полю, используя метод в исходном вопросе. - person Andrew; 26.01.2014
comment
Вы можете использовать то же самое, преобразовать элемент содержимого Event в динамический и использовать content.Event.TaxonomyFieldName.Terms. - person mberacochea; 27.01.2014