Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 以编程方式将模板字段设置为共享或未版本_Asp.net_Sitecore_Sitecore8_Sitecore8.1 - Fatal编程技术网

Asp.net 以编程方式将模板字段设置为共享或未版本

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

我正在使用Sitecore版本8.1,并试图以编程方式创建
模板
字段
项目
(以确保项目/模板不存在时的某些场景),我正在尝试将特定模板的字段设置为
共享
未版本
,但无法实现,因为:

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中的不同表中。你可以在这里找到一些信息: