Umbraco订单到期日期

时间:2014-08-11 08:37:41

标签: c# loops razor umbraco

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

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

这与Umbracos createDate类似但不起作用。有人有任何想法吗?感谢

1 个答案:

答案 0 :(得分:2)

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

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

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

这是一个非常好的习惯,以这种方式扩展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对象来访问你的数据库。