我是Umbraco CMS的初学者,我注意到每次我需要查询节点时,我都依赖于常量id.
例如:
public static class Constants
{
public static class Pages
{
public static class System
{
public const int Root = 1059;
public const int Home = 1092;
public const int Pressemeddelelse = 1143;
}
public const int GratisKontoComplete = 1181;
public const int TilmeldNyhedsbrevComplete = 1182;
}
}
Run Code Online (Sandbox Code Playgroud)
当我需要获取节点时,上面的代码可以帮助我,比如@ Umbraco.NiceUrl(Constants.Pages.System.Root);
现在我的问题是:
有没有其他方法如何实现这一目标?如果内容编辑器删除了节点并创建了该怎么办?节点if肯定会改变.你想让我通过NodeAlias查询吗?但我不知道如何,我不想使用uQuery,因为我使用最新的Umbraco版本7.4.3使用MVC.
小智 5
首先,您不应该使用id来检索节点.有很多方法但对我来说最简单可靠的方法是使用linq查询.例如,有三个节点HOME,BLOG和COMMENT.现在是home节点,BLOG和Comment是HOME节点的子节点.现在要检索父节点,请使用以下节点.
Umbraco.TypedContentAtRoot().First();
要么
Model.Content.AncestorOrSelf(1).First()
其中model是当前节点.您也可以使用此代码
var rootNode = new Node(-1);
所有aboce代码都将帮助您获取根节点,即HOME节点,现在获取根节点后,您现在可以使用SQL查询来获取HOME节点的所有子节点,依此类推.举个例子,如果我想检索BLOG节点,那么我的代码就是
'var Blog= rootNode.Children.First(x => x.DocumentTypeAlias == "Blog");'
Run Code Online (Sandbox Code Playgroud)
其中"DocumentTypeAlias"是BLOG节点的别名.希望这会对你有所帮助
干杯
| 归档时间: |
|
| 查看次数: |
1086 次 |
| 最近记录: |