其他分享
首页 > 其他分享> > 删除项目时如何模拟内容编辑器的“删除链接”选项?

删除项目时如何模拟内容编辑器的“删除链接”选项?

作者:互联网

我有一组项目,这些项目具有一个树列表字段,该字段引用了媒体库中的媒体项目.如果删除被另一个项目引用的媒体项目,则会出现“链接断开”对话框,该对话框为我提供了“删除链接”,“链接到另一个项目”或仅保留断开链接的选项.

当我选择“删除链接”时,正在调用什么API /代码?我想在后面的代码中以编程方式执行相同的操作.

就上下文而言,我们允许广告会员上传图像并(通过自定义Web界面)操纵其图像库.因此,当有人从他们的集合中删除图像时,显然我们不想留下指向这些媒体库项目的断开链接.

解决方法:

那将是链接数据库.您可以在删除项目以查找引荐来源之前利用它:

Sitecore.Globals.LinkDatabase.GetReferrers(item)

返回的ItemLink对象包含该项目和引用要删除的项目的字段.使用适当的Field类删除引用.

尽管您可能认为LinkDatabase上的RemoveLinks或RemoveReferences方法可以完成您想要的操作,但实际上只是从Link数据库本身中删除了链接/引用.

编辑:
Reflector的一些工作可以提供一个更完整的解决方案…如果您使用FieldTypeManager工厂获取该字段的CustomField,则可以在该字段上调用RemoveLink(ItemLink).

Field field = item.Fields[brokenField];
CustomField field2 = FieldTypeManager.GetField(field);
item.Editing.BeginEdit();
field2.RemoveLink(itemLink);
item.Editing.EndEdit();

这是未经测试的代码,可以通过引用Sitecore.Shell.Applications.Links.EditLinksForm找到

标签:sitecore,sitecore6,asp-net,c
来源: https://codeday.me/bug/20191207/2087588.html