Umbraco:x.GetPropertyValue("myProp") 对比 x.myProp
Umbraco: x.GetPropertyValue("myProp") vs x.myProp
我用的是 Umbraco v4,但觉得这应该是个常见问题。
我有一个 "Content Picker" 的通用 属性 "myNode",它应该获得一个 DynamicNode...
so doying 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)
那么,如何获得真正的 属性 值,而不仅仅是它的字符串表示形式?
使用类似的东西:mynode = Umbraco.Content(CurrentPage.myNode).Url
(对于 Umbraco 6 和 7)对于 Umbraco 4,我在脚本文件中使用这个 Model.NodeById(Model.myNode).Url;
。 (我认为它至少需要 Umbraco 4。7.x)
您的内容选择器不包含节点,它包含节点的 ID。
myObj.GetPropertyValue("myNode") 完全按照所说的去做,在实例化的 DynamicNode 对象上获取名为 myNode 的 属性 的值。它不是为 return 节点本身设计的。
如果您想 return 包含您的 'myNode' 属性 ID 的节点,那么您必须在调用中使用该值来实例化另一个 DynamicNode
DynamicNode myNewNode = new DynamicNode(myObj.GetPropertyValue("myNode"))
或
Model.NodeById(myObj.GetPropertyValue("myNode"))
一个不太优雅的解决方案,但至少是一个有效的解决方案:
var linkNode = image.GetPropertyValue("imgLinkNode" + model._lang.ToUpper());
if (linkNode is string)
{
string id = linkNode;
linkNode = model.NodeById(id);
}
var linkNodeUrl = linkNode.Url;
我用的是 Umbraco v4,但觉得这应该是个常见问题。
我有一个 "Content Picker" 的通用 属性 "myNode",它应该获得一个 DynamicNode...
so doying 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)
那么,如何获得真正的 属性 值,而不仅仅是它的字符串表示形式?
使用类似的东西:mynode = Umbraco.Content(CurrentPage.myNode).Url
(对于 Umbraco 6 和 7)对于 Umbraco 4,我在脚本文件中使用这个 Model.NodeById(Model.myNode).Url;
。 (我认为它至少需要 Umbraco 4。7.x)
您的内容选择器不包含节点,它包含节点的 ID。
myObj.GetPropertyValue("myNode") 完全按照所说的去做,在实例化的 DynamicNode 对象上获取名为 myNode 的 属性 的值。它不是为 return 节点本身设计的。
如果您想 return 包含您的 'myNode' 属性 ID 的节点,那么您必须在调用中使用该值来实例化另一个 DynamicNode
DynamicNode myNewNode = new DynamicNode(myObj.GetPropertyValue("myNode"))
或
Model.NodeById(myObj.GetPropertyValue("myNode"))
一个不太优雅的解决方案,但至少是一个有效的解决方案:
var linkNode = image.GetPropertyValue("imgLinkNode" + model._lang.ToUpper());
if (linkNode is string)
{
string id = linkNode;
linkNode = model.NodeById(id);
}
var linkNodeUrl = linkNode.Url;