【发布时间】:2023-03-19 12:58:01
【问题描述】:
我现在正在努力通过 C# 将项目添加到 Sitecore 数据库。
下面的代码可以正确执行,但是没有创建项目。
另外,我注意到 item["FieldName"]=value;语法实际上并不填充 Fields 集合。
并且该项目上的 Fields 集合似乎是只读的,所以我不能只调用 .Add (这种方法不存在)。
那么 - 创建子项并填充其字段的正确方法是什么?
我将 Master 数据库用于 Sitecore 后端和此代码。
我在下面使用的代码:
using (new Sitecore.SecurityModel.SecurityDisabler())
{
Database db = Factory.GetDatabase(this.Database);
foreach (var vacancy in Articles.Tables[0].Rows)
{
var rootItem = db.GetItem(this.RootItem);
DataRow dr = (DataRow) vacancy;
var newItem = rootItem.Add(string.Format("{0} {1}", dr["numericID"], dr["job_name"]),
db.GetTemplate(new ID("{GUID}")));
newItem.Editing.BeginEdit();
newItem["Job Title"] = dr["job_name"].ToString();//
newItem.Editing.EndEdit();
}
}
更多信息: newItem.Template.Fields 返回一个包含 100 个字段的集合
newItem.Fields 返回一个 FieldCollection,其中只有 9 个元素。
当我通过代码时 newItem["field"].Value = value;它不会增加 newItem.Fields 集合计数。
当然,“field”键与 newItem.Template.Fields[x].Name 中的键是一致的。
【问题讨论】: