2015-04-21 17 views
0

我使用Umbraco v4,但認爲這應該是一個常見問題。Umbraco:x.GetPropertyValue(「myProp」)vs x.myProp

我有一個通用的財產「內容選擇器」的「MYNODE」,應該獲得DynamicNode ...

所以doying myObj.myNode我得到節點本身 ...所以可以使用myObj.myNode.Url

doying的myObj.GetPropertyValue("myNode")我得到節點的...字符串ID值...所以不能再做myObj.GetPropertyValue("myNode").Url(字符串沒有Url屬性)

我不能直接使用myObj.myNode,因爲名稱是「動態的」(同一個函數在條件下應該使用「你的」+「節點」或「他們的」+「節點」) - 該示例非常適合,但希望這個想法是清楚的)...

我甚至myObj.GetPropertyValue<DynamicNode>("myNode"),但結果卻是一樣的:「8124」(節點ID)

那麼,如何獲得真正的屬性值,而不是它的字符串表示形式?

+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

你的內容選擇器中不包含一個節點,它包含一個節點的ID。

myObj.GetPropertyValue(「myNode」)的確如所說的那樣,在實例化的DynamicNode對象上獲取名爲myNode的屬性的值。它不旨在返回節點本身。

如果你想返回其ID的「MYNODE」屬性包含,那麼你必須使用該值在調用實例化另一個DynamicNode

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

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

我已經在OP中突出顯示了相關信息... bc您的第一個短語並不準確。 – Serge

相關問題