0

我使用 Umbraco v4,但认为这应该是一个常见问题。

我有一个“内容选择器”的通用属性“myNode”,它应该获得一个动态节点......

所以myObj.myNode得到了节点本身......所以可以使用myObj.myNode.Url

但是myObj.GetPropertyValue("myNode")得到了节点的...字符串ID值...所以不能再做myObj.GetPropertyValue("myNode").Url(字符串没有Url属性)

我不能直接使用 myObj.myNode,因为名称是“动态的”(相同的函数应根据条件使用“您的”+“节点”或“他们的”+“节点”——示例非常接近,但希望思路很清楚)...

我什至做了myObj.GetPropertyValue<DynamicNode>("myNode"),但结果是一样的:“8124”(节点ID)

那么,如何获取真实的属性值,而不仅仅是字符串表示呢?

4

3 回答 3

3

您的内容选择器不包含节点,它包含节点的 id。

myObj.GetPropertyValue("myNode") 完全按照所说的进行,获取实例化的 DynamicNode 对象上名为 myNode 的属性的值。它并非旨在返回节点本身。

如果要返回“myNode”属性包含其 ID 的节点,则必须在调用中使用该值来实例化另一个 DynamicNode

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

或者

Model.NodeById(myObj.GetPropertyValue("myNode"))
于 2015-04-22T06:04:43.437 回答
0

一个不太优雅的解决方案,但至少是一个可行的解决方案:

var linkNode = image.GetPropertyValue("imgLinkNode" + model._lang.ToUpper());
if (linkNode is string)
{
    string id = linkNode;
    linkNode = model.NodeById(id);
}
var linkNodeUrl = linkNode.Url;
于 2015-04-22T09:54:55.187 回答
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

于 2015-04-21T20:22:09.023 回答