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

在Umbraco Razor中按名称查找节点id,razor,umbraco7,Razor,Umbraco7,我有一个网站的结构类似于主页->新闻->年->月->日->文章,需要查询以查找日文件夹的id,其中文件夹的名称与指定的年、月和日匹配 例如,2003年5月12日的情况如下: @something().where("Year.name = 2003").where("Month.name = May").where("Day.name = 12") 根据您的偏好,您可以使用动态API或强类型API构造查询 根据使用位置的不同,查询会有所不同,因此假设您希望运行此查询并在“新闻”页面中显示结果,则

我有一个网站的结构类似于
主页->新闻->年->月->日->文章
,需要查询以查找
文件夹的id,其中文件夹的名称与指定的
匹配

例如,2003年5月12日的情况如下:

@something().where("Year.name = 2003").where("Month.name = May").where("Day.name = 12")

根据您的偏好,您可以使用动态API或强类型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()
,但实际上,在获取其子体之前,您可能需要检查页面是否存在。另外,您可能希望查看,并提出更适合您的场景的查询。

谢谢-请您告诉我在查询之前在哪里可以找到有关检查页面是否存在的文档。我找到的所有方法都依赖于事先知道节点id。您只需将查询末尾的
First()
语句替换为
FirstOrDefault()
,然后检查结果是否为null。