Umbraco订单到期日期

本文关键字:日期 Umbraco | 更新日期: 2023-09-27 18:17:20

我在下面创建了一个简单的循环,我想通过它的umbraco "Unpublish at"属性来排序这个循环。在我的脑海里应该是这样的:-

@foreach (var example in CurrentPage.Children.OrderBy("expireDate"))
{
    //Do Stuff//
}

这将类似于Umbracos的createDate,但不工作。有人有什么想法吗?由于

Umbraco订单到期日期

正如@nsgocev所描述的那样,你不能在Razor中直接这样做,但是,你也不应该访问Razor中的Document对象,因为这会访问数据库。

理想情况下,你应该做的是一点工作,但值得:

  • 在基本文档类型上创建一个新的日期属性,命名为"expiryDate"
  • 创建一个事件,该事件将在页面发布时设置此字段,并且"Unpublish"字段具有属性集。

这是一个很好的习惯,以这种方式扩展Umbraco。如下所示:

public class ExpiryDateEvent : IApplicationEventHandler 
{
    public void OnApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
    {
        ContentService.Published += ContentService_Published;
    }
    void ContentService_Published(IPublishingStrategy sender, PublishEventArgs<IContent> e)
    {
        var entity = e.Entity;
        if (entity.HasProperty("expiryDate") && e.entity.ExpireDate.HasValue)
        {
             entity.SetValue("expiryDate", e.Entity.ExpireDate.Value);
             sender.Save(entity);
        }
    }
}

这样做的好处是它有很多其他场景的应用程序。你做的一件事而不是想要做的是在你的UI中使用Document对象访问你的数据库。