如何使用剃刀从 Umbraco 7 中的页面更新节点属性



我一直在寻找解决这个问题的方法,但找不到版本 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(IPublishedContentDynamicPublishedContent 不同)。

编辑:我刚刚注意到Jannik答案中的评论或多或少提供了相同的答案。

ContentService 是你的朋友 :-)https://our.umbraco.org/documentation/Reference/Management/Services/ContentService

有了它,您可以保存和发布内容。

相关内容

  • 没有找到相关文章

最新更新