Umbraco,通过名称和数据类型获取节点

本文关键字:数据类型 获取 节点 Umbraco | 更新日期: 2023-09-27 18:08:21

我有一个名为"Demo"的数据类型,我也有一个名为"Test"的页面/节点。如果我不在任何类型的上下文中,我将如何选择此页面/节点?

我已经尝试使用新的节点(-1)和选择我的方式,但我真的不能弄清楚这个…

提前感谢!

Umbraco,通过名称和数据类型获取节点

最简单的方法可能是使用以下uQuery扩展之一:

  • GetNodesByName (string)
  • GetNodesByType(string or int)

这里有几个例子:

GetNodesByName(字符串):

umbraco.NodeFactory.Node node = uQuery.GetNodesByName("Page Name")
    .Where(n => n.NodeTypeAlias == "NodeTypeAlias").FirstOrDefault();
if (node != null)
{
    //...
}

GetNodesByType(字符串或整数):

umbraco.NodeFactory.Node node = uQuery.GetNodesByType("NodeTypeAlias")
    .Where(n => n.Name == "Page Name").FirstOrDefault();
if (node != null)
{
    //...
}

对于Umbraco 6+,我认为这将是更可取的…

public static IPublishedContent GetNodeByAlias(string alias)
{
    var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
    var contentNode = umbracoHelper.TypedContentSingleAtXPath(String.Format("//{0}", alias));
    return contentNode;
}

这只需要一个文档类型别名,并使用当前Umbraco上下文将节点查找为ipublishhedcontent。UmbracoHelper也为你提供了一些选项