Соответствие выбора динамического идентификатора контента списку ItemViewModel в SiteFinity

Я создал модуль Продукты и тип контента продукта. Я создаю собственный виджет для отображения одного продукта. Я настроил свой дизайнер и, как только я уронил виджет на страницу, я могу выбрать из списка продуктов, используя sf-list-selector sf-dynamic-items-selector. Моя проблема заключается в сопоставлении идентификатора выбранного элемента со списком продуктов, которые отображает мой виджет. Вот код, который виджет использует для получения всех продуктов:

var dynamicModuleManager = DynamicModuleManager.GetManager(providerName);
var contentType = TypeResolutionService.ResolveType(typeName);
var contentElements = dynamicModuleManager.GetDataItems(contentType).Where(x => x.Status == ContentLifecycleStatus.Live);

products = contentElements.ToArray().Select(p => new ItemViewModel(p)).ToArray();

Это хорошо работает и подтягивает список продуктов. Вопрос в том, как отфильтровать этот список, используя идентификатор выбранного продукта от дизайнера. У меня есть это, и они не совпадают:

products.Single(p => p.DataItem.Id == Guid.Parse(selectedProductId))

Как перейти от ItemViewModel к идентификатору, который дает мне селектор?

используя Feather 9.1

1 ответ

Решение

Пошел другой маршрут. Вместо того, чтобы получить список и фильтрацию, сделали так:

var dynamicModuleManager = DynamicModuleManager.GetManager(providerName);
var contentType = TypeResolutionService.ResolveType(typeName);
var contentElement = dynamicModuleManager.GetDataItem(contentType, Guid.Parse(selectedProductId));
product =  new ItemViewModel(dynamicModuleManager.Lifecycle.GetLive(contentElement));
Другие вопросы по тегам