在 Umbraco Razor 中按名称查找节点 ID
Find node id by name in Umbraco Razor
我有一个结构类似于 Home -> News -> Year -> Month -> Day -> Article
的站点,需要查询以查找 Day
文件夹的 ID,该文件夹的名称与指定的 Year
、Month
和 Day
.
例如,对于 2003 年 5 月 12 日,它将类似于:
@something().where("Year.name = 2003").where("Month.name = May").where("Day.name = 12")
根据您的喜好,您可以使用动态 DynamicPublishedContent or the strongly-typed IPublishedContent API.
构造查询
查询将根据使用位置而有所不同,因此假设您要 运行 此查询并将结果显示在 "News" 页面中,您需要如下内容:
var year = CurrentPage.Years.Where("Name == @1", "2013").First();
var month = year.Months.Where("Name == @1", "May").First();
var day = month.Days.Where("Name == @1", "12").First();
var dayId = day.Id;
或者,您可以尝试强类型版本:
var day = Model.Content
.Descendants("Year").First(y => y.Name == "2013")
.Descendants("Month").First(m => m.Name == "May")
.Descendants("Day").First(d => d.Name == "12").Id;
为了简洁起见,我使用了 First()
,但实际上您可能希望在获取其后代之前检查页面是否存在。此外,您可能想查看 documentation 并提出更适合您的情况的查询。
我有一个结构类似于 Home -> News -> Year -> Month -> Day -> Article
的站点,需要查询以查找 Day
文件夹的 ID,该文件夹的名称与指定的 Year
、Month
和 Day
.
例如,对于 2003 年 5 月 12 日,它将类似于:
@something().where("Year.name = 2003").where("Month.name = May").where("Day.name = 12")
根据您的喜好,您可以使用动态 DynamicPublishedContent or the strongly-typed IPublishedContent API.
构造查询查询将根据使用位置而有所不同,因此假设您要 运行 此查询并将结果显示在 "News" 页面中,您需要如下内容:
var year = CurrentPage.Years.Where("Name == @1", "2013").First();
var month = year.Months.Where("Name == @1", "May").First();
var day = month.Days.Where("Name == @1", "12").First();
var dayId = day.Id;
或者,您可以尝试强类型版本:
var day = Model.Content
.Descendants("Year").First(y => y.Name == "2013")
.Descendants("Month").First(m => m.Name == "May")
.Descendants("Day").First(d => d.Name == "12").Id;
为了简洁起见,我使用了 First()
,但实际上您可能希望在获取其后代之前检查页面是否存在。此外,您可能想查看 documentation 并提出更适合您的情况的查询。