在复杂结构 Umbraco 7 中查找文档类型
Find document type in complex structure Umbraco 7
我的内容结构如下。
- 根目录
- 网站A
- 首页
- 第 1 页
- 第 2 页
- 第 N 页
- 网站 B
- 首页
- 网站 C
- 首页
每个 Home
文档类型都连接到一个主布局模板。
在我的主布局中,我尝试通过编写此代码来找到 Home
节点。
var home = Model.Content.Siblings().FirstOrDefault(x => x.DocumentTypeAlias == "Home");
这在我在 Home
节点上时有效,但当我转到 ex 时。 Page 1
我得到一个例外,因为 Home
不是 Page 1
的兄弟姐妹。
然后我试了这个。
var home= Umbraco.TypedContentAtXPath("//Home").FirstOrDefault();
这在我处于 Website A
时有效,因为它返回了第一个节点。
但是当在 Website B
时,我仍然得到 Website A
节点,这是错误的。
关于如何解决这个问题的任何提示?
我找到了解决方法:
var home = Model.Content.AncestorOrSelf(2).Children().FirstOrDefault(x => x.DocumentTypeAlias == "Home");
有几种不同的方法可以实现这一点,但以下是最简洁的方法:
var home = Model.Content.AncestorsOrSelf("Home").FirstOrDefault();
我的内容结构如下。
- 根目录
- 网站A
- 首页
- 第 1 页
- 第 2 页
- 第 N 页
- 首页
- 网站 B
- 首页
- 网站 C
- 首页
- 网站A
每个 Home
文档类型都连接到一个主布局模板。
在我的主布局中,我尝试通过编写此代码来找到 Home
节点。
var home = Model.Content.Siblings().FirstOrDefault(x => x.DocumentTypeAlias == "Home");
这在我在 Home
节点上时有效,但当我转到 ex 时。 Page 1
我得到一个例外,因为 Home
不是 Page 1
的兄弟姐妹。
然后我试了这个。
var home= Umbraco.TypedContentAtXPath("//Home").FirstOrDefault();
这在我处于 Website A
时有效,因为它返回了第一个节点。
但是当在 Website B
时,我仍然得到 Website A
节点,这是错误的。
关于如何解决这个问题的任何提示?
我找到了解决方法:
var home = Model.Content.AncestorOrSelf(2).Children().FirstOrDefault(x => x.DocumentTypeAlias == "Home");
有几种不同的方法可以实现这一点,但以下是最简洁的方法:
var home = Model.Content.AncestorsOrSelf("Home").FirstOrDefault();