我在sitecore中有一个项目,可以说“AddressItem
”有一些孩子。我想在所有子项目中编辑字段“IsMain”。
我正在使用Foreach
循环。有没有更好的方法来实现这一目标。
foreach (Sitecore.Data.Items.Item child in AddressItem.Children)
{
using (new SecurityDisabler())
{
child.Editing.BeginEdit();
child.Fields["IsMain"].Value = "0";
child.Editing.EndEdit();
}
}
答案 0 :(得分:0)
将IsMain字段标准值设置为0可能会更快,然后将所有项重置为该标准值。没有开箱即用的功能,但下面的代码将执行此操作。
这个功能比你的要求更强大,但它的代码是我原来的。
首先,您需要具有正确权限的用户来替换:ElevatedUserAccount
接下来,获取要重置值的项目列表,然后创建要重置的字段列表。在您的情况下,AddressItem.Children和IsMain。
最后将它们传递给下面的方法。
public void ResetFields(List<Item> items, List<string> fields)
{
if (items.Any() && fields.Any())
{
foreach (Item item in items)
{
ResetFieldsOnItem(item, fields);
}
}
}
public void ResetFieldsOnItem(Item item, List<string> fields)
{
if (item != null && fields.Any())
{
using (new Sitecore.Security.Accounts.UserSwitcher(ElevatedUserAccount, true))
{
item.Editing.BeginEdit();
foreach (string field in fields)
{
item.Fields[field].Reset();
}
item.Editing.EndEdit();
}
}
}