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)
我认为你的例外是无关的.要实际保存更改,您需要编辑项目.请务必始终访问并更新值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)