Episerver: получить свойства ссылки для создания абсолютного URL-адреса

У меня есть существующий тип блока со свойством типа PageReference, указывающим на внутренние страницы.

Требование состоит в том, чтобы заменить существующее свойство свойством Url, которое может указывать либо на внутреннее, либо на внешнее содержимое.

Для этого я создал задание по расписанию для переноса значения свойства для существующих блоков в производственной среде.

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

//implementation
var contentTypeRepository = ServiceLocator.Current.GetInstance<EPiServer.DataAbstraction.IContentTypeRepository>();
var contentModelUsage = ServiceLocator.Current.GetInstance<IContentModelUsage>();
var repository = ServiceLocator.Current.GetInstance<IContentRepository>();

//Teaser Item Block
var blockItem = contentTypeRepository.Load(typeof(TeaserItemBlock));

// get usages, also includes versions
IList<ContentUsage> usages = contentModelUsage.ListContentOfContentType(blockItem);

Теперь я хочу перебрать экземпляры блоков и установить свойство Url.


person Farhin Shaikh    schedule 17.09.2020    source источник
comment
Удалось ли вам преобразовать значение свойства?   -  person Ted Nyberg    schedule 22.09.2020
comment
Привет, Тед. Да, я смог получить собственность, но мне пришлось немного изменить подход, так как мы не можем получить собственность напрямую. Ваш вклад помог мне получить желаемый результат. Ниже приведена реализация кода, который я вставил. Ваши отзывы приветствуются. Еще раз спасибо   -  person Farhin Shaikh    schedule 22.09.2020


Ответы (1)


Если ваше старое свойство является свойством PageReference, вы сможете преобразовать его в постоянную ссылку и назначить его новому свойству Url (поддерживается неявное приведение строки к Url).

Что-то вроде следующего:

YourContent.NewUrlProperty = 
    ServiceLocator.Current.GetInstance<IPermanentLinkMapper>()               
    .Find(YourContent.OldPageReferenceProperty)
    .PermanentLinkUrl
person Ted Nyberg    schedule 17.09.2020
comment
Да, это была опечатка. Я пересмотрел вопрос и изменил его. - person Farhin Shaikh; 18.09.2020
comment
Хорошо, понял, добавил пример кода для преобразования значения свойства. Скрещенные пальцы. :) - person Ted Nyberg; 20.09.2020