从Umbraco的UrlName获取节点

时间:2014-10-27 13:30:49

标签: c# .net xpath umbraco

我正在设置Umbraco设置(Umbraco 7),我需要能够从node.UrlName加载节点。

我试过了Xpath,但那并没有奏效。这是我的xpath

var facNode = umbraco.NodeFactory.Node.GetNodeByXpath("/*[@UrlName='" + urlName + "']");

我还尝试了一些不带/的{​​{1}}和//的变体,而只是寻找id而不是UrlName

这似乎相当简单,但我似乎错过了一些东西。我对Umbraco很新,所以任何帮助都会非常感激。

我认为有比xpath更好的方法吗?我应该用什么课程?

提前致谢!

1 个答案:

答案 0 :(得分:1)

嗯,这里有几件事。首先,xpath区分大小写,因此您需要定位@urlName而不是@UrlName

同样值得指出的是,尝试通过urlName属性定位节点并不是一个非常好的策略,因为多个节点可能具有相同的urlName属性。这是可能的,因为Umbraco只坚持urlName属性在节点共享同一父节点时是唯一的。

这是有道理的,因为(例如,在对新闻/博客文章进行分组时)您可能需要一个名为October的节点在名为2014的节点下,但在名为2013的父节点下也需要一个名为October的节点。在这种情况下,您的xpath将定位到10月节点因此不起作用。

就目前而言,它取决于上下文的内容以及您要实现的目标。你当然应该避免使用来自Umbraco 4.8的umbraco.NodeFactory.Node,标准是使用IPublishedContent接口,这可以说更灵活。

相关问题