내 질문은 기본적으로 @Bob Black의 Cannot access sitecore item field via API과 동일하지만 허용 된 솔루션이 필요하지 않으며 제 경우에는 작동하지 않는다는 것에 동의합니다.Sitecore 템플릿에서 프로그래밍 방식으로 새 필드에 액세스 할 수 없음
내 자신의 말로는 약 1 년 동안 프로그래밍 방식으로 항목을 만들고 업데이트하는 데 사용한 Departure
템플릿이 있습니다. 템플릿에 새 필드 Ship
을 추가했습니다. 새 항목을 만들 때 departure.Fields["Ship"]
을 사용하여 필드에 액세스하려고하면 필드가 null로 표시됩니다. 내가 전화를 departure.Editing.EndEdit()
호출 한 후 예외를 일으키는 줄을 단계를 경우 호출하면 Ship
필드를 볼 수 있습니다. Sitecore GUI를 통해 컨텐트 아이템에 템플릿을 추가하면 필드를보고 사용할 수 있으며 템플릿을 기반으로하는 컨텐트 항목을 보면 새로운 필드도 볼 수 있습니다. 그래서 그것이 템플릿/항목에 프로그래밍 방식으로 액세스 할 때만 null입니다.
로컬 sqlserver로 로컬 컴퓨터에서 sitecore를 실행하고 로컬 컴퓨터에 게시합니다. 여기
그래서 내 코드
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();
}
이다, 어떻게 필드가 뽑힐받을 수 있나요?
고마워요,
제임스.