C# 是否有办法通过umbraco中的api返回当前站点节点id?
Umbraco的新手当然 我有一些代码,用于返回给定节点id的特定数据类型内容,详细信息如下: 这很好,但是我必须知道起始节点,即在我的情况下,站点节点id(多站点umbraco安装) 我还知道,您可以通过以下方式获取主根节点: 我的问题是…… 从后端API,是否仍然可以动态获取当前站点节点ID(第一个链接)?这样我就不必事先知道了。我认为可以从查询字符串中获取站点id。。Page.Request.QueryString[“id”]但是我猜如果该页面是模板页面,那么会返回此消息,但是这是来自后端类 还有吗?或者我找错树了C# 是否有办法通过umbraco中的api返回当前站点节点id?,c#,api,umbraco,C#,Api,Umbraco,Umbraco的新手当然 我有一些代码,用于返回给定节点id的特定数据类型内容,详细信息如下: 这很好,但是我必须知道起始节点,即在我的情况下,站点节点id(多站点umbraco安装) 我还知道,您可以通过以下方式获取主根节点: 我的问题是…… 从后端API,是否仍然可以动态获取当前站点节点ID(第一个链接)?这样我就不必事先知道了。我认为可以从查询字符串中获取站点id。。Page.Request.QueryString[“id”]但是我猜如果该页面是模板页面,那么会返回此消息,但是这是来自
任何帮助都将不胜感激 假设所有根节点都是相同的文档类型,在razor中,您可以执行以下操作: var folderId=@Model.AncestorOrSelf(“MyFolderType”).Id 它将从当前节点“向上”或“向后”搜索,直到找到指定类型的节点类型 这里有另一种方式:
假设所有根节点都是相同的文档类型,在razor中,您可以执行以下操作: var folderId=@Model.AncestorOrSelf(“MyFolderType”).Id 它将从当前节点“向上”或“向后”搜索,直到找到指定类型的节点类型 这里有另一种方式:
假设您有一个Umbraco安装,有两个站点,分别有各自的主页和页面,例如
- 内容(-1)
- 主页1(1000)
- 第1.1页(1001)
- 主页2(1002)
- 第2.1页(1003)
- 主页1(1000)
Node currentNode = Node.GetCurrent();
其对应的主节点可以通过
Node currentHome = new Node(int.Parse(currentNode.Path.Split(',')[1]));
现在,currentNode.Path
返回以-1开头的逗号分隔整数字符串,
i、 e.根,你称之为主根,所有主页都在它下面“生存”
例如,第2.1页的路径值为-110021003。在逗号处拆分时,将得到一个包含索引为0、1、2的3个元素的数组。现在,第二个索引为索引1将给出主节点的id。如您所见,最后一个id是当前节点的id。另外,索引还表示节点的级别,因此主页的级别为1
我在一个模板上使用了下面的脚本,该模板在内联网/外联网上使用,并且具有受保护的页面。当访问者通过链接访问受保护的页面时,他/她将被拒绝访问并重定向到具有成员登录名的主页
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
<%@ Import Namespace="umbraco.NodeFactory" %>
<script runat="server" language="CSharp">
protected void Page_Load(object sender, EventArgs e)
{
// prevents template to be run without proper authorisation
Node currentNode = Node.GetCurrent();
Node currentHome = new Node(int.Parse(currentNode.Path.Split(',')[1]));
Boolean HasAccess = umbraco.library.HasAccess(currentNode.Id, currentNode.Path);
Boolean IsProtected = umbraco.library.IsProtected(currentNode.Id, currentNode.Path);
if (IsProtected && !HasAccess)
{
// redirect to ancestor-or-self::HomePage
Response.Status = "403 Forbidden";
Response.Redirect(umbraco.library.NiceUrl(currentHome.Id), true);
}
}
</script>
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<!-- redirect to home page -->
</asp:Content>
受保护的无效页面加载(对象发送方、事件参数e)
{
//防止在未经适当授权的情况下运行模板
Node currentNode=Node.GetCurrent();
节点currentHome=新节点(int.Parse(currentNode.Path.Split(',')[1]);
布尔HasAccess=umbraco.library.HasAccess(currentNode.Id,currentNode.Path);
布尔值IsProtected=umbraco.library.IsProtected(currentNode.Id,currentNode.Path);
如果(i受保护&!HasAccess)
{
//重定向到祖先或自我::主页
Response.Status=“403禁止”;
Response.Redirect(umbraco.library.NiceUrl(currentHome.Id),true);
}
}
假设您有一个Umbraco安装,有两个站点,分别有各自的主页和页面,例如
- 内容(-1)
- 主页1(1000)
- 第1.1页(1001)
- 主页2(1002)
- 第2.1页(1003)
- 主页1(1000)
Node currentNode = Node.GetCurrent();
其对应的主节点可以通过
Node currentHome = new Node(int.Parse(currentNode.Path.Split(',')[1]));
现在,currentNode.Path
返回以-1开头的逗号分隔整数字符串,
i、 e.根,你称之为主根,所有主页都在它下面“生存”
例如,第2.1页的路径值为-110021003。在逗号处拆分时,将得到一个包含索引为0、1、2的3个元素的数组。现在,第二个索引为索引1将给出主节点的id。如您所见,最后一个id是当前节点的id。另外,索引还表示节点的级别,因此主页的级别为1
我在一个模板上使用了下面的脚本,该模板在内联网/外联网上使用,并且具有受保护的页面。当访问者通过链接访问受保护的页面时,他/她将被拒绝访问并重定向到具有成员登录名的主页
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
<%@ Import Namespace="umbraco.NodeFactory" %>
<script runat="server" language="CSharp">
protected void Page_Load(object sender, EventArgs e)
{
// prevents template to be run without proper authorisation
Node currentNode = Node.GetCurrent();
Node currentHome = new Node(int.Parse(currentNode.Path.Split(',')[1]));
Boolean HasAccess = umbraco.library.HasAccess(currentNode.Id, currentNode.Path);
Boolean IsProtected = umbraco.library.IsProtected(currentNode.Id, currentNode.Path);
if (IsProtected && !HasAccess)
{
// redirect to ancestor-or-self::HomePage
Response.Status = "403 Forbidden";
Response.Redirect(umbraco.library.NiceUrl(currentHome.Id), true);
}
}
</script>
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<!-- redirect to home page -->
</asp:Content>
受保护的无效页面加载(对象发送方、事件参数e)
{
//防止在未经适当授权的情况下运行模板
Node currentNode=Node.GetCurrent();
节点currentHome=新节点(int.Parse(currentNode.Path.Split(',')[1]);
布尔HasAccess=umbraco.library.HasAccess(currentNode.Id,currentNode.Path);
布尔值IsProtected=umbraco.library.IsProtected(currentNode.Id,currentNode.Path);
如果(i受保护&!HasAccess)
{
//重定向到祖先或自我::主页
Response.Status=“403禁止”;
Response.Redirect(umbraco.library.NiceUrl(currentHome.Id),true);
}
}
您好,谢谢您的回复!对于翁布拉科来说,这是一个非常新的概念,需要一段时间才能理解很多细节。。因此没有想到向上遍历到特定的节点类型。。我猜是这样的。。不幸的是,我没有使用剃须刀页面。。实际上,我有一个ASHX页面,它调用一些后端代码来计算逻辑(使用Umbraco API调用),然后