簡體   English   中英

Umbraco:x.GetPropertyValue(“ myProp”)與x.myProp

[英]Umbraco: x.GetPropertyValue(“myProp”) vs x.myProp

我使用的是Umbraco v4,但認為這應該是一個常見的問題。

我有一個“內容選擇器”的通用屬性“ myNode”,應該獲得一個DynamicNode ...

所以在執行myObj.myNode我獲得了節點本身 ...因此可以使用myObj.myNode.Url

但是, 在執行myObj.GetPropertyValue("myNode")我獲得了...節點的字符串ID值...因此,不再可以使用myObj.GetPropertyValue("myNode").Url (字符串沒有Url屬性)

我不能直接使用myObj.myNode,因為名稱是“ dynamic”(相同的函數應在條件上使用“ your” +“ Node”或“ their” +“ Node”)-該示例非常接近,但希望想法很明確)...

我什至做了myObj.GetPropertyValue<DynamicNode>("myNode") ,但是結果是一樣的:“ 8124”(節點ID)

那么,如何獲得不動產值,而不僅僅是它的字符串表示形式?

您的內容選擇器不包含節點,而是包含節點的ID。

myObj.GetPropertyValue(“ myNode”)完全按照說的做,在實例化的DynamicNode對象上獲取名為myNode的屬性的值。 它不旨在返回節點本身。

如果要返回其“ myNode”屬性包含其ID的節點,則必須在調用中使用該值來實例化另一個DynamicNode

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

要么

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

使用類似的東西: 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

一個不太好用的解決方案,但至少是一個可行的解決方案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM