Получить родительский элемент из модели представления блога - Sitefinity

Мне нужно получить родительский элемент (блог) в представлении бритвы из объекта модели представления для любого заданного сообщения в блоге.

Я делаю это в стандартном файле List.BlogPostList.cshtml.

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


Пробовал

item.ParentItem().DataItem.GetDefaultUrl()

Получил это в журнале ошибок:

Не удалось найти свойство родительского элемента для данного элемента. Этот метод расширения следует использовать только для доступа к родительскому элементу элементов DynamicContent.


Пробовал

item.GetRelatedParentItems("Blog").ToString()

Получил это в журнале ошибок:

Тип "Блог" не может быть разрешен.

Похоже, что это близко, но я не могу догадаться, какая волшебная строка parentItemsTypeName ему нужна, и, конечно же, документация Sitefinity ужасна.


person Randy Hall    schedule 02.02.2018    source источник


Ответы (1)


Что-то вроде этого должно работать:

@foreach (var item in Model.Items)
{
       var parent = (item.DataItem as BlogPost).Parent;
       var parentTitle = parent.Title;
       var parentUrl = parent.UrlName;
}

Не забудьте также добавить следующие предложения using:

@using Telerik.Sitefinity.Blogs.Model;
person Veselin Vasilev    schedule 04.02.2018
comment
Получение исключения нулевой ссылки на var parent = (item.DataItem as DynamicContent).SystemParentItem; - у меня есть предложения @using - person Randy Hall; 05.02.2018
comment
item.DataItem это хорошо, так что это либо что-то внутри кастинга, либо DNE .SystemParentItem - person Randy Hall; 05.02.2018
comment
Это не кастинг, попытка доступа к SystemParentItem выдает ошибку - person Randy Hall; 05.02.2018
comment
После некоторого тестирования приведение item.DataItem к DynamicContent равно нулю. - person Randy Hall; 05.02.2018
comment
Извините, я упустил из виду. Обновил ответ выше - person Veselin Vasilev; 06.02.2018
comment
Я люблю тебя, пожалуйста, рожай моих детей. - person Randy Hall; 06.02.2018