查询 Umbraco 节点的最佳实践
Best practice for querying Umbraco nodes
我是 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;
}
}
上面的代码在我需要获取节点时帮助了我,比如@Umbraco.NiceUrl(Constants.Pages.System.Root);
现在我的问题是:
有没有其他方法可以做到这一点?如果内容编辑器删除了节点并创建了怎么办?节点 if 将更改为肯定正确。
你想让我通过 NodeAlias 查询它吗?但我不知道如何,我不想使用 uQuery,因为我使用的是最新的 Umbraco Version 7.4.3,使用 MVC。
首先你不应该使用id来检索节点。
有很多方法,但对我来说最简单可靠的方法是使用 linq 查询。
例如有三个节点 HOME, BLOG 和 COMMENT 。现在 home 是父节点, BLOG 和 Comment 是 HOME 节点的子节点。现在要检索父节点,请使用以下节点。
Umbraco.TypedContentAtRoot().First();
或
Model.Content.AncestorOrSelf(1).First()
其中模型是当前节点。
您也可以使用此代码
var rootNode = new Node(-1);
所有的aboce代码将帮助您获取根节点即HOME节点,现在在获取根节点之后您现在可以使用SQL查询来获取HOME节点的所有子节点等等。例如,如果我想检索 BLOG 节点,那么我的代码将是
'var Blog= rootNode.Children.First(x => x.DocumentTypeAlias == "Blog");'
其中"DocumentTypeAlias"是BLOG节点的别名。
希望这会对你有所帮助
干杯
我是 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;
}
}
上面的代码在我需要获取节点时帮助了我,比如@Umbraco.NiceUrl(Constants.Pages.System.Root);
现在我的问题是:
有没有其他方法可以做到这一点?如果内容编辑器删除了节点并创建了怎么办?节点 if 将更改为肯定正确。 你想让我通过 NodeAlias 查询它吗?但我不知道如何,我不想使用 uQuery,因为我使用的是最新的 Umbraco Version 7.4.3,使用 MVC。
首先你不应该使用id来检索节点。 有很多方法,但对我来说最简单可靠的方法是使用 linq 查询。 例如有三个节点 HOME, BLOG 和 COMMENT 。现在 home 是父节点, BLOG 和 Comment 是 HOME 节点的子节点。现在要检索父节点,请使用以下节点。
Umbraco.TypedContentAtRoot().First();
或
Model.Content.AncestorOrSelf(1).First()
其中模型是当前节点。 您也可以使用此代码
var rootNode = new Node(-1);
所有的aboce代码将帮助您获取根节点即HOME节点,现在在获取根节点之后您现在可以使用SQL查询来获取HOME节点的所有子节点等等。例如,如果我想检索 BLOG 节点,那么我的代码将是
'var Blog= rootNode.Children.First(x => x.DocumentTypeAlias == "Blog");'
其中"DocumentTypeAlias"是BLOG节点的别名。 希望这会对你有所帮助
干杯