2015-09-14 1 views
1

В Sitecore у меня есть Item. Скажем, его имя weekDay. Он имеет поле по умолчанию (стандартные поля) Sortorder. Я хочу отредактировать это поле и поместить в него строку. Но следующий код дает мне System.NullReferenceException: Object reference not set to an instance of an object.Sitecore, как отредактировать стандартное значение поля предметов

switch (weekDay.Name.ToLower()) 
{ 
    case "monday": 
     weekDay.Editing.BeginEdit(); 
     weekDay.Fields["Sortorder"].Value = "1"; 
     weekDay.Editing.EndEdit(); 
     break; 
} 

Я получаю исключение в этой строке weekDay.Fields["Sortorder"].Value = "1"; в коде выше.

Любая помощь была бы действительно оценена. Благодаря!!

ответ

1

Ваш код нормально. Единственная проблема заключается в том, что поле не называется "Sortorder", его называют "__Sortorder". Попытка:

weekDay.Fields["__Sortorder"].Value = "1"; 

Большинство стандартных полей Sitecore имеют префикс с двойным подчеркиванием, например. __Sortorder, __Hidden, __Display Name, __Read Only и т.д.

+0

Спасибо большое! – Kamran

0

Можете ли вы проверить, является ли weekDay нулевым? Я думаю WeekDay элемент нулевой

Для редактирования элемента WeekDay вы будете иметь:

if (weekDay!=null) 
    { 
    using (new EditContext(weekDay)) 
    { 
     switch (weekDay.Name.ToLower()) 
        { 
         case "monday": 
          weekDay.Fields["__Sortorder"].Value = "1"; 
          break; 
        } 
     } 
     } 
+0

Спасибо за ответ, но этот элемент не является нулевым. Я попытался отредактировать другое поле (добавлено мной), и я могу получить к нему доступ без ошибок. – Kamran

1

Большинства стандартных полей начинаются с __ (двойным подчеркиванием), поэтому имя поля фактически "__Sortorder".

weekDay.Fields["__Sortorder"].Value = "1"; 

// Or use the field ID from Sitecore.FieldIDs class 
weekDay.Fields[Sitecore.FieldIDs.Sortorder].Value = "1"; 

Sitecore.FieldIDs класс содержит поле ID многих, если не все, стандартные поля.