2015-04-21 2 views
0

Я использую Umbraco v4, но думаю, что это должна быть общая проблема.Umbraco: x.GetPropertyValue («myProp») vs x.myProp

У меня есть родовое свойство "MyNode" из "Content Picker", который должен получить DynamicNode ...

так doying myObj.myNode я получаю узел сам ... так можно использовать myObj.myNode.Url

Но doying myObj.GetPropertyValue("myNode") я получаем ... струнный ID значение узла ... так больше не могу сделать myObj.GetPropertyValue("myNode").Url (строка не имеет Url свойство)

Я не могу использовать непосредственно myObj.myNode, потому что имя «динамическое» (одна и та же функция должна использовать «ваш» + «Узел» или «их» + «Узел» при условиях - пример очень аппроксимативный, но надеюсь идея понятна) ...

Я даже сделал myObj.GetPropertyValue<DynamicNode>("myNode"), но результат был тот же: «8124» (идентификатор узла)

Итак, как получить реальную стоимость имущества, а не только строковое представление?

+0

Как создается экземпляр myObj - показать нам код? Это не то, как работает сборщик контента. Может быть какой-то другой фанковый тип данных, но не сборщик контента. – wingyip

ответ

0

А, не поэтому, по крайней мере, решение, которое работает:

var linkNode = image.GetPropertyValue("imgLinkNode" + model._lang.ToUpper()); 
if (linkNode is string) 
{ 
    string id = linkNode; 
    linkNode = model.NodeById(id); 
} 
var linkNodeUrl = linkNode.Url; 
0

Используйте что-то вроде: mynode = Umbraco.Content(CurrentPage.myNode).Url (для Umbraco 6 и 7) Для Umbraco 4 я использую этот файл Model.NodeById(Model.myNode).Url; в файле сценария. (Я думаю, что это нужно, по крайней мере Umbraco 4.7.x)

Смотрите также https://our.umbraco.org/documentation/Using-Umbraco/Backoffice-Overview/Property-Editors/Built-in-Property-Editors/Content-Picker

+2

Umbraco.Content и CurrentPage применяются только к U6 + – wingyip

+0

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

+0

См. мой ответ ниже, он будет делать то, что вам нужно – wingyip

3

Вашего сборщик содержания не содержит узел, он содержит идентификатор узла.

myObj.GetPropertyValue ("myNode") выполняет именно то, что говорит, получает значение свойства myNode в экземпляре объекта DynamicNode. Он не предназначен для возврата самого узла.

Если вы хотите, чтобы вернуть узел, идентификатор вашей собственности «MyNode» содержит, то вы должны использовать это значение в вызове экземпляра еще один DynamicNode

DynamicNode myNewNode = new DynamicNode(myObj.GetPropertyValue("myNode")) 

или

Model.NodeById(myObj.GetPropertyValue("myNode")) 
+0

Я выделил интересующую информацию в OP ... bc, ваша первая фраза не является точной. – Serge

Смежные вопросы