Успявам да получа 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
, но това едва ли изглежда правилно. Без кастинга получавам грешка обектът не съдържа метод или свойство „Стойност“. Мислех, че върнатият обект е динамичен обект, но очевидно не е така. Все още се чудя дали просто аз не разбирам 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