gpt4 book ai didi

c# - 暗影。在控制台应用程序中获取节点的 url

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:57 25 4
gpt4 key购买 nike

我在控制台应用程序中使用 Umbraco。当我尝试为某个节点获取 NiceUrl 时,这是不可能的,因为 UmbracoContext.Current 为空。

我可以用这样的 id 获取节点路径:“-1,1067,1080”,但不知道如何将其转换为 url 格式。

如何在控制台应用程序中为 Node 获取 NiceUrl

接下来我做了: 在我的控制台应用程序中,我通过 Id 获取节点,就像这样简单:

Node someNode = new Node(nodeId);

当我尝试获取 NiceUrl 时:

string url = someNode.NiceUrl;

获取 ArgumentNullException。

我检查了原因:找到下一个答案 NiceUrl 使用 UmbracoContext 所以这是不可能的,因为它是空的。

我也不能使用这个:UmbracoContext.Current.ContentCache.GetById(someidhere).Url

谢谢。

最佳答案

如果没有 UmbracoContext,我认为在 V6 中不可能获得 IContent 节点的 URL。

我查看了 Umbraco 源代码并决定重新创建它在那里完成的方式。我想出了这个,它满足了我的需要。

https://gist.github.com/petergledhill/ca2a3a0ea81b06abcb08

public static class ContentExtensions
{
public static string RelativeUrl(this IContent content)
{
var pathParts = new List<string>();
var n = content;

while (n != null)
{
pathParts.Add(n.UrlName());
n = n.Parent();
}
pathParts.RemoveAt(pathParts.Count() - 1); //remove root node
pathParts.Reverse();
var path = "/" + string.Join("/", pathParts);
return path;
}

public static string UrlName(this IContent content)
{
return new DefaultUrlSegmentProvider().GetUrlSegment(content).ToLower();
}
}

关于c# - 暗影。在控制台应用程序中获取节点的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19163257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com