我的问题是基本相同@Bob黑色的Cannot access sitecore item field via API但我@ techphoria414是接受的解决方案是没有必要的,在我的情况不工作达成一致。不能编程访问一个新的领域上的模板在Sitecore的
在我自己的话,我有一个模板Departure
,我已经使用了一年左右,现在编程方式创建和更新项目。我在模板中添加了一个新字段Ship
。当我创建一个新项目时,当我尝试使用departure.Fields["Ship"]
访问它时,该字段为空。如果我跨过导致异常的线路,然后在拨打departure.Editing.EndEdit()
后,我可以看到Ship
字段,如果我拨打departure.Fields.ToList()
。如果我通过Sitecore GUI将模板添加到内容项目中,我可以看到该字段并使用它,如果我查看基于模板的内容项,我也可以看到新的字段。所以只有当我以编程方式访问模板/项目时它是空的。
我有Sitecore的与当地的SQLSERVER我的本地机器上运行,并发布到我的本地机器。
这里是我的代码
String ship = "MSDisaster";
foreach (Language language in SiteLanguages)
{
departure = departure.Database.GetItem(departure.ID, language);
departure.Editing.BeginEdit();
try
{
departure.Fields["StartDate"].Value = GetSitecoreDateString(xDep, "StartDate");
departure.Fields["EndDate"].Value = GetSitecoreDateString(xDep, "EndDate");
departure.Fields["Guaranteed"].Value = xDep.SelectSingleNode("./Guaranteed").InnerText;
departure.Fields["Status"].Value = xDep.SelectSingleNode("./Status").InnerText;
departure.Fields["Currency"].Value = ConvertLanguageToCurrency(language);
departure.Fields["Market"].Value = ConvertLanguageToMarket(language);
departure.Fields["TwinSharePrice"].Value = GetPrice(xDep, "twn", language);
departure.Fields["SinglePrice"].Value = GetPrice(xDep, "sgl", language);
if (!String.IsNullOrEmpty(ship))
departures.Fields["Ship"].Value = ship;
}
catch (Exception ex)
{
departure.Editing.CancelEdit();
log.Error(ex);
throw ex;
}
departure.Editing.EndEdit();
}
所以,我怎么领域有所回升?
谢谢,
詹姆斯。