以编程方式删除Sitecore中的子布局

Jon*_*Jon 3 .net c# sitecore sitecore6

有谁知道如何从Sitecore项目中删除渲染?

我想删除所有子布局,以便我可以用新的替换它们.我试过这个,但它似乎没有用.该项目没有任何变化.

我似乎能够像这样得到渲染:

RenderingReference[] renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, true);
Run Code Online (Sandbox Code Playgroud)

但似乎没有办法设置它们.

我也可以得到这样的效果图(来自上面的链接):

LayoutDefinition layoutDefinition = LayoutDefinition.Parse(LayoutField.GetFieldValue(item.Fields[Sitecore.FieldIDs.LayoutField]));
DeviceDefinition device = layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString());

if (device.Layout != null) device.Layout = null;
if (device.Renderings != null) device.Renderings = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

但这又不起作用.从layoutDefinition中清除设备并设置修改后的设备导致了这个异常:No connection could be made because the target machine actively refused it.我现在根本无法查看该项目!

我觉得我正在吠叫错误的树,任何想法?

使用Sitecore 6.4

更新回复:techphoria414

我试过的代码:

layoutDefinition.Devices.Clear();
layoutDefinition.Devices.Add(device);
Run Code Online (Sandbox Code Playgroud)

tec*_*414 7

我认为你的例外是无关的.要实际保存更改,您需要编辑项目.请务必始终访问并更新值throgh LayoutField.Value.

LayoutField layoutField = new LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]);
LayoutDefinition layout = LayoutDefinition.Parse(layoutField.Value);
//make your changes to the LayoutDefinition here
item.Editing.BeginEdit();
layoutField.Value = layout.ToXml();
item.Editing.EndEdit();
Run Code Online (Sandbox Code Playgroud)