Мне удается получить URL-адрес моего мультимедиа, используя следующий синтаксис:
Umbraco.Media(CurrentPage.MyImage).Url
Но когда я пытаюсь сделать то же самое, используя синтаксис GetProperty
(странно, я некоторое время использовал getProperty
из примеров в Интернете, но этот синтаксис всегда возвращал какой-то пустой динамический объект), который отлично работает для других свойств, я получаю всевозможные ошибки приведения:
// results in:
// System.InvalidOperationException: The value of parameter 'id' must
// be either a string or an integer
Umbraco.Media(CurrentPage.GetProperty("myImage")).Url
// or
Umbraco.Media(CurrentPage.GetProperty("_myImage")).Url
И использование некоторой формы Umbraco.TypedContent<Media>
привело только к большему количеству ошибок NRE и кастинга. В конечном итоге я попробовал следующее, но это всегда возвращало пустой список:
Umbraco.Media("myImage","umbracoFile")
Я не возражаю против использования динамического синтаксиса или любого другого синтаксиса в этом отношении, но я удивлен, что GetProperty
явно возвращает что-то отличное от динамического синтаксиса.
В конечном счете, все, что я хотел, это использовать синтаксис _propName
(имя с префиксом подчеркивания), чтобы получить свойство этой или любой родительской страницы, в зависимости от того, что установлено. Если не считать запроса списка AncestorOrSelf
страниц, есть ли способ заставить это работать, используя «простой» синтаксис?
Быстрое обновление Если я делаю @CurrentPage.GetProperty("_defaultBackgroundImage")
, я вижу идентификатор мультимедиа в HTML, но когда я пытаюсь передать его Umbraco.Media
, я получаю InvalidOperationException
значение параметра 'id' должно быть либо строкой, либо целое число. Приведение к int
дает недопустимое приведение, а использование ToString
возвращает имя типа. Должен быть какой-то способ вернуть то же целочисленное значение, которое я вижу, когда я вывожу его с использованием синтаксиса Razor @
, верно?
Umbraco.Media( ((Umbraco.Core.Models .IPublishedProperty) CurrentPage.GetProperty("_myImage")).Value).Url
, но это вряд ли кажется правильным. Без приведения я получаю ошибку объект не содержит метод или свойство 'Value'. Я думал, что возвращенный объект был динамическим объектом, но, видимо, это не так. Все еще интересно, это просто я не понимаю Umbraco, упущение в структуре Umbraco или просто по замыслу, и я должен просто жить с этим. - person Abel   schedule 28.07.2015CurrentPage.GetPropertyValue<int>("_myImage"))
? - person Davor Zlotrg   schedule 28.07.20150
. Похоже, синтаксис подчеркивания не работает сGetPropertyValue<>
. Если я удалю_
, это сработает, но это не то, что мне нужно. - person Abel   schedule 28.07.2015CurrentPage.GetPropertyValue<int>("myImage", recursive: true, ifCannotConvert: string.Empty)
- person Davor Zlotrg   schedule 28.07.2015_propValue
не работает сGetPropertyValue<>
, но работает сGetProperty
? Или это изменение в Umbraco 7? Он работает со вторым аргументомtrue
. - person Abel   schedule 28.07.2015