我一直在寻找解决这个问题的方法,但找不到版本 7 的任何内容。
我只需要更新 Umbraco 7 节点上的日期属性。(不是发布日期)然后我需要告诉 umbraco 重新发布页面/更新缓存。
在下面的代码中,单个节点是"item",如果它发现该项目的复选框属性设置为 true,那么它应该将日期增加 1 年。
if(item.annual.ToString()=="True")
{
item.deadlineDate = item.deadlineDate.AddYears(1);
}
任何和所有的建议都感激地欢迎,
问候达米安·霍利
假设item
变量是动态的,首先需要将其 id 传递给管理 API 服务:
var contentService = ApplicationContext.Current.Services.ContentService;
var content = contentService.GetById(item.Id);
content.SetValue("deadlineDate", item.deadlineDate.AddYears(1));
contentService.SaveAndPublish(content);
这将保留该值,并使其在应用程序的其他位置可用。它还将使用管理员用户的帐户进行更新,因此,如果您希望审核跟踪显示其他内容,则需要使用将用户 ID 传递给SaveAndPublish
方法。
最后,在视图中使用管理 API 时需要小心。不仅可能由于前端用户操作而丢失数据,而且还可能导致性能问题,因为ContentService
将始终命中数据库,这与查询 API(IPublishedContent
或 DynamicPublishedContent
不同)。
编辑:我刚刚注意到Jannik答案中的评论或多或少提供了相同的答案。
ContentService 是你的朋友 :-)https://our.umbraco.org/documentation/Reference/Management/Services/ContentService
有了它,您可以保存和发布内容。