C# 响应。从.net Usercontrol重定向到具有umbraco.NodeFactory GetNodeByXpath的上一个同级

C# 响应。从.net Usercontrol重定向到具有umbraco.NodeFactory GetNodeByXpath的上一个同级,c#,asp.net,xpath,umbraco,C#,Asp.net,Xpath,Umbraco,我想将客户从一个页面重定向到它前面的第一个同级页面(从.NET usercontrol)。这是我的代码,但我得到异常“$currentPage/前面的同级::*[@isDoc][1]具有无效令牌” 当然,currentPage不是.net usercontrol中定义的参数,所以我考虑删除它,所以我写了这个 Node sibling = Node.GetNodeByXpath(@"/preceding-siblings::* [@isDoc][1]"); if (sibling != null)

我想将客户从一个页面重定向到它前面的第一个同级页面(从.NET usercontrol)。这是我的代码,但我得到异常“$currentPage/前面的同级::*[@isDoc][1]具有无效令牌

当然,currentPage不是.net usercontrol中定义的参数,所以我考虑删除它,所以我写了这个

Node sibling = Node.GetNodeByXpath(@"/preceding-siblings::* [@isDoc][1]");
if (sibling != null)
    Response.Redirect(umbraco.library.NiceUrl(sibling.Id));

我尝试了更多的方法,但没有任何效果。我无法找出我的代码中的错误,任何想法!还有别的办法吗。注意,我必须从.net usercontrol而不是xslt中执行此操作。谢谢你,我想你可以这样做,我不知道这是不是正确的方法


获取根节点的子节点并将其ID保存在整数列表中。然后您可以从列表中找到当前节点的前一个节点。

我考虑过这种方法,但我确信有一种更快更直接的方法。我会再等一段时间,看看我们是否能有更多的想法。@m.othman:是的,确实如此,请在umbraco论坛上发布这篇文章,更多的人会在那里查看。.umbraco论坛上的解决方案[
Node sibling = Node.GetNodeByXpath(@"/preceding-siblings::* [@isDoc][1]");
if (sibling != null)
    Response.Redirect(umbraco.library.NiceUrl(sibling.Id));