我正在设置Umbraco
设置(Umbraco 7
),我需要能够从node.UrlName
加载节点。
我试过了Xpath
,但那并没有奏效。这是我的xpath
:
var facNode = umbraco.NodeFactory.Node.GetNodeByXpath("/*[@UrlName='" + urlName + "']");
我还尝试了一些不带/
的{{1}}和//
的变体,而只是寻找id
而不是UrlName
。
这似乎相当简单,但我似乎错过了一些东西。我对Umbraco
很新,所以任何帮助都会非常感激。
我认为有比xpath
更好的方法吗?我应该用什么课程?
提前致谢!
答案 0 :(得分:1)
嗯,这里有几件事。首先,xpath区分大小写,因此您需要定位@urlName
而不是@UrlName
。
同样值得指出的是,尝试通过urlName属性定位节点并不是一个非常好的策略,因为多个节点可能具有相同的urlName属性。这是可能的,因为Umbraco只坚持urlName属性在节点共享同一父节点时是唯一的。
这是有道理的,因为(例如,在对新闻/博客文章进行分组时)您可能需要一个名为October的节点在名为2014的节点下,但在名为2013的父节点下也需要一个名为October的节点。在这种情况下,您的xpath将定位到10月节点因此不起作用。
就目前而言,它取决于上下文的内容以及您要实现的目标。你当然应该避免使用来自Umbraco 4.8的umbraco.NodeFactory.Node
,标准是使用IPublishedContent
接口,这可以说更灵活。