Asp.net 以编程方式将模板字段设置为共享或未版本
我正在使用Sitecore版本8.1,并试图以编程方式创建Asp.net 以编程方式将模板字段设置为共享或未版本,asp.net,sitecore,sitecore8,sitecore8.1,Asp.net,Sitecore,Sitecore8,Sitecore8.1,我正在使用Sitecore版本8.1,并试图以编程方式创建模板、字段和项目(以确保项目/模板不存在时的某些场景),我正在尝试将特定模板的字段设置为共享或未版本,但无法实现,因为: bool TemplateFieldItem.Shared属性只有getter方法(没有setter) 我的代码: var icon=PageTemplate.AddField(“图标”、“数据”); 使用(新的EditContext(icon.InnerItem)) { icon.Type=“Image”; ico
模板
、字段
和项目
(以确保项目/模板不存在时的某些场景),我正在尝试将特定模板的字段设置为共享
或未版本
,但无法实现,因为:
bool TemplateFieldItem.Shared
属性只有getter
方法(没有setter)
我的代码:
var icon=PageTemplate.AddField(“图标”、“数据”);
使用(新的EditContext(icon.InnerItem))
{
icon.Type=“Image”;
icon.Sortorder=3;
icon.Shared=false;
}
所以我的问题只在于
icon.Shared=false代码>以及icon.Unversioned=false代码>您需要在内部项上设置它。从理论上讲,将字段从版本更改为未版本或从共享更改为非共享是一个复杂的过程,但假设您正在添加这些字段,并且这些字段中不应包含任何项,您应该可以
使用:
icon.InnerItem[TemplateFieldId.Unversioned]=“1”//或空
或:
icon.InnerItem[TemplateFieldId.Shared]=“1”//或空
在您的回答中,您提到,如果基于您的模板已经存在项目,则会出现问题。你能详细说明一下吗?我是否需要迭代这些项并删除这些字段的本地值?@GregB我还没有在任何生产环境中单独尝试过这一点。但共享/版本化/未版本化字段的数据存储在sql中的不同表中。你可以在这里找到一些信息: