EPiServer: Могу ли я установить динамическое свойство из кода?

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

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

Предложения кто-нибудь?

1 ответ

AFAIK единственный способ сделать это с классом DynamicProperty. Если вы посмотрите на документацию по свойству индексатора на объекте PageData, он говорит:

Заметка! Использование этого индексатора будет использовать обработчики Pre и Post для поиска свойств. Я не возвращаю значения, которые не могут принадлежать странице, но могут быть динамическими свойствами, "fetch -data -из" CN00 "и т.д. Чтобы получить данные, гарантированные принадлежать этой странице, используйте методы GetValueand SetValue.

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

Вам нужно будет использовать класс DynamicProperty:

DynamicProperty myDynProp = DynamicProperty.Load(CurrentPage.PageLink, "PropertyName");
myDynProp.PropertyValue.Value = "new value";
myDynProp.Save();

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

licensed under cc by-sa 3.0 with attribution.