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

如何使用razor从Umbraco 7中的页面更新节点属性,razor,umbraco7,Razor,Umbraco7,我一直在寻找解决方案,但找不到版本7的任何解决方案 我只需要更新Umbraco 7节点上的日期属性。(不是发布日期) 然后我需要告诉umbraco重新发布页面/更新缓存 在下面的代码中,单个节点是“item”,如果它发现该项的checkbox属性设置为true,则应将日期增加1年 if(item.annual.ToString()=="True") { item.deadlineDate = item.deadlineDate.AddYears(1); } 欢迎提出任何建议 问候,,

我一直在寻找解决方案,但找不到版本7的任何解决方案

我只需要更新Umbraco 7节点上的日期属性。(不是发布日期) 然后我需要告诉umbraco重新发布页面/更新缓存

在下面的代码中,单个节点是“item”,如果它发现该项的checkbox属性设置为true,则应将日期增加1年

if(item.annual.ToString()=="True")
{
    item.deadlineDate = item.deadlineDate.AddYears(1);
}
欢迎提出任何建议

问候,,
达米恩·霍利(Damien Holley)

内容服务是你的朋友:-)


使用它,您可以保存和发布内容。

假设您的
变量是动态的,您首先需要将其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(
ippublishedcontent
DynamicPublishedContent
不同,
ContentService
将始终命中数据库,这不仅可能由于前端用户操作而丢失数据,还可能导致性能问题


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

对不起,我是Umbraco的noob,哪一部分专门处理更新项目上的变量“deadlineDate”?我在链接页面上找到了一些关于发布对象的内容,但没有更新内容。如果您有一个内容对象(),您可以更新诸如item.SetValue(“deadlineDate”,DateTime.Whatever)之类的属性,然后使用ContentService保存和发布。使用ContentService更新属性的方式如下所示(未测试):var contentService=Services.contentService;var content=contentService.GetById(item.Id);content.SetValue(deadlineDate,item.deadlineDate.AddYears(1));contentService.SaveAndPublishWithStatus(content);是的,如果item还不是一个内容对象,则类似于此。另外,SetValue(“deadlineDate”,…)干杯,伙计们,我感谢你们的回答干杯,我感谢你们的帮助