如何在所有现有节点中升级新添加的属性?

时间:2013-03-22 05:02:41

标签: asp.net deployment umbraco

我们正在管理一个拥有超过2000个节点的umbraco站点。我们最近在我们的一个主文档类型中添加了一个新属性,因为它是一个新属性,现有节点没有属性值。我们必须在部署新更改之前更新每个节点中该属性的值。由于需要花费大量时间,因此手动更新值非常困难。我们计划的是使用一次性升级aspx页面或用户控件来完成这个工作。有没有人遇到这种情况?如何进行一次性升级页面?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我相当确定这不是核心,并且没有为此目的创建包。但是创建一个包含razor(cshtml)脚本的宏非常简单,该脚本为特定节点的所有后代更新单个属性:

类似的东西(仅限于二级课程的记忆):

var nodes = @Model.DescendantsOrSelf(-1); //-1 is the root node
foreach (var node in nodes)
{
  Document doc = new Document(node.Id);
  doc.getProperty("yourProperty").Value = "xxx"; // the getProperty looks wrong, I know
  doc.Publish(new User(0));  //User 0 is the admin user
  umbraco.library.UpdateDocumentCache(doc.Id);
}

这个很棒的软件包http://our.umbraco.org/projects/developer-tools/content-maintenance-dashboard-package会进行批量更新,但上次检查时它没有更新单个字段 - 但现在可能会更新。

答案 1 :(得分:0)

如果你转到以下网址,我原以为要重新发布xml缓存应该这样做:

/umbraco/dialogs/republish.aspx?xml=true

相关问题