在 Umbraco Razor 中按名称查找节点 ID

Find node id by name in Umbraco Razor

我有一个结构类似于 Home -> News -> Year -> Month -> Day -> Article 的站点,需要查询以查找 Day 文件夹的 ID,该文件夹的名称与指定的 YearMonthDay.

例如,对于 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 并提出更适合您的情况的查询。