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

时间:2016-04-18 12:58:59

标签: razor umbraco7

我的网站结构类似Home -> News -> Year -> Month -> Day -> Article,需要查询才能找到Day文件夹的ID,其中文件夹的名称与指定的Year匹配,{{1} }和Month

例如,对于2003年5月12日,它将类似于:

Day

1 个答案:

答案 0 :(得分:2)

您可以使用动态DynamicPublishedContent或强类型IPublishedContent API构建查询,具体取决于您的偏好。

查询将根据其使用位置而有所不同,因此假设您要运行此查询并在"新闻"中显示结果。页面,您需要以下内容:

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并提出更适合您的方案的查询。