对于以下示例,我使用的内容树如下所示: Content tree
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var home = Model.Content.Descendants().Where(x => x.DocumentTypeAlias == "BlogContainer");
<div class="container">
<ul>
@foreach (var item in home)
{
foreach (var items in item.Children)
{
foreach (var baby in items.Children.OrderBy("date desc"))
{
var date = baby.GetPropertyValue<DateTime>("date");
<li>@items.Name - @baby.Name - @date</li>
}
}
}
</ul>
</div>
}
结果是Result three我需要收集所有项目并按日期设置顺序
答案 0 :(得分:3)
尝试并执行类似
的操作var allItems = homePage.Descendants("YourItemNodeType")
.Where(item => item.HasValue("date")
&& item.GetPropertyValue<DateTime>
("date") != DateTime.MinValue)
.ToList()
.OrderByDescending(item => item.GetPropertyValue<DateTime>("date"));
这应该可以获得第1类和第2类中的所有项目,我总是倾向于检查我的日期是否实际设置(你不需要为@bowserm提到的创建日期这样做,因为它始终存在于值)。
一旦你把它们带到List然后你就可以按照它们的设定日期对它们进行排序,当我在不同的父页面中列出新闻文章时,我会这样做,然后你可以只用一个循环来完成所有这些。
答案 1 :(得分:0)
首先,您使用的是Umbraco版本?看起来你正在使用6+?是对的吗?我的答案应该适用于6和7。
您要查找的属性名为createDate
,因此您可以使用baby.GetPropertyValue<DateTime>("createDate")
之类的内容。更好的是,您应该只需键入baby.CreateDate
即可。 Umbraco已将您在IPublishedContent上可能需要的所有默认属性公开为属性,因此您无需使用GetPropretyValue(...)
即可获得这些属性。
看看这个Umbraco v6 MVC Razor Cheatsheet。它列出了您可以从Umbraco中的节点获取的默认属性。 v6的剃刀语法也适用于v7,因此这个备忘单适用于两者。