Как программно создать элемент контента существующего типа в Orchard

У меня есть тип содержимого Registration, который я создал с помощью графического интерфейса администратора. У него есть только идентификатор, общая часть и несколько текстовых полей. Могу ли я просто сделать что-то вроде:

var registration = services.ContentManager.New("Registration"); 
registration.Name = "My Name";
registration.Comment = "Some random comment";
services.ContentManager.Create(registration, VersionOptions.Published);

Или мне придется полностью определить свой тип контента в коде и вручную позаботиться о сохранении? Все учебные пособия, которые я могу найти в Интернете, а также официальная документация касаются только создания типов контента и элементов с нуля. Кажется, нет примеров простого создания нового элемента существующего типа.


person Lawyerson    schedule 09.10.2015    source источник


Ответы (1)


Вы можете сделать это, как это просто отлично. Однако, если вы хотите установить больше настроек, вы должны сделать это динамическим, чтобы вы могли просто поместить туда любое значение:

dynamic registration = services.ContentManager.New("Registration");

// It is dynamic, so you can now set any property on it:
// <contentItem>.<theContentPart>.<thePropertyName> = someValue
// <contentItem>.<theContentPart>.<theField>.Value = someValue

// Set properties of a part
registration.ThePartThatHasTheNameProperty.Name = "My Name";
registration.ThePartThatHasTheCommentProperty.Comment = "Some random comment";

// Set properties of a field
registration.ThePartThatHasTheField.TheField.Value = "Some value";

services.ContentManager.Create(registration, VersionOptions.Published);

Или, строго типизированный:

var registration = services.ContentManager.New("Registration");

registration.As<SomePart>().SomeProperty = "Some value";
registration.As<SomeOtherPart>().SomeOtherProperty = "Some other value";
person devqon    schedule 09.10.2015
comment
Спасибо! Трудно найти примеры этого в Интернете. В качестве примечания я должен был поместить назначение значений полей ниже инструкции Create, иначе они будут иметь версии, но не будут записаны. - person Lawyerson; 09.10.2015