从Umbraco中的UrlName获取节点

本文关键字:获取 节点 UrlName 中的 Umbraco | 更新日期: 2023-09-27 18:27:54

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

我试过Xpath,但没用。这是我的xpath:

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

我还尝试了一些没有/、有//的变体,只是在寻找id而不是UrlName

这似乎很简单,但我似乎遗漏了一些东西。我是Umbraco的新手,如果有任何帮助,我们将不胜感激。

有比xpath更好的方法吗?我应该使用什么类?

提前感谢!

从Umbraco中的UrlName获取节点

这里有几件事。首先,xpath是区分大小写的,所以您需要针对@urlName而不是@UrlName

此外,值得指出的是,尝试通过urlName属性定位节点不是一个很好的策略,因为多个节点可能具有相同的urlName特性。这是可能的,因为Umbraco只坚持在节点共享同一父节点的情况下urlName属性是唯一的。

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

顺便说一句,这取决于背景是什么以及你试图实现什么。您当然应该避免使用umbraco.NodeFactory.Node,因为Umbraco 4.8中的标准是使用IPublishedContent接口,它可以说更灵活。