Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Umbraco订单到期日期_C#_Loops_Razor_Umbraco - Fatal编程技术网

C# Umbraco订单到期日期

C# Umbraco订单到期日期,c#,loops,razor,umbraco,C#,Loops,Razor,Umbraco,我在下面创建了一个简单的循环,我想按其umbraco“Unpublish at”属性对该循环进行排序。在我看来,应该是这样的:- @foreach (var example in CurrentPage.Children.OrderBy("expireDate")) { //Do Stuff// } 这类似于Umbracos createDate,但不起作用。有人有什么想法吗?感谢@nsgocev所描述的,您不能在Razor中直接执行此操作,但是,您也不应该访问Razor中的文档对象,

我在下面创建了一个简单的循环,我想按其umbraco“Unpublish at”属性对该循环进行排序。在我看来,应该是这样的:-

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

这类似于Umbracos createDate,但不起作用。有人有什么想法吗?感谢@nsgocev所描述的,您不能在Razor中直接执行此操作,但是,您也不应该访问Razor中的文档对象,因为这会影响数据库

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

  • 在基本文档类型上创建一个名为“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);
        }
    }
}
公共类ExpiryDateEvent:IAApplicationEventHandler
{
应用程序启动时公共无效(umbraco应用程序基础umbraco应用程序,应用程序上下文应用程序上下文)
{
ContentService.Published+=ContentService\u Published;
}
void ContentService_Published(IPpublishingstrategy发送方,PublishEventArgs e)
{
var实体=e.实体;
if(entity.HasProperty(“expiryDate”)和e.entity.ExpireDate.HasValue)
{
entity.SetValue(“ExpireDate”,即entity.ExpireDate.Value);
保存(实体);
}
}
}
这样做的好处是,它有这么多用于其他场景的应用程序。您不想做的一件事是使用UI中的Document对象访问数据库