C# Umbraco订单到期日期
我在下面创建了一个简单的循环,我想按其umbraco“Unpublish at”属性对该循环进行排序。在我看来,应该是这样的:-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中的文档对象,
@foreach (var example in CurrentPage.Children.OrderBy("expireDate"))
{
//Do Stuff//
}
这类似于Umbracos createDate,但不起作用。有人有什么想法吗?感谢@nsgocev所描述的,您不能在Razor中直接执行此操作,但是,您也不应该访问Razor中的文档对象,因为这会影响数据库 理想情况下,你应该做一点工作,但值得:
- 在基本文档类型上创建一个名为“expiryDate”的新日期属性
- 创建一个事件,该事件将在页面发布且“取消发布”字段具有属性集时设置此字段
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对象访问数据库