CustomItemGenerator и редактор страниц

Sitecore 6.6 Обновление 4

Мы используем CustomItemGenerator 1.0, и я использовал его, чтобы помочь создать главное меню навигации для сайта. Это сработало, как ожидалось, и все было правильно отрисовано.

Моя проблема в том, что я пытаюсь редактировать меню через редактор страниц; Я даже не вижу меню.

Я использую ретранслятор и повторяю список ссылок, которые нужно включить в навигацию. Из-за способа создания HTML каждый элемент LI должен иметь свой собственный конкретный идентификатор (поле «Nav Id» в Sitecore), который связан с CSS. Код внутри события ItemDataBound моего ретранслятора:

// Cast the item using CustomItemGenerator-generated class
GenericContentPageItem navItem = (GenericContentPageItem)e.Item.DataItem;

liMenuItem.ID = navItem.NavId.Rendered; // I tried "navItem.NavId" by itself as well

Таким образом, хотя это правильно отображается в браузере, это не так, когда я нахожусь в редакторе страниц:

<li id="<input id='fld_B72EB6696DCF41A49671972D5EA5DEB8_2163B90C08AB4A18970A7F3ECE79DCFC_en_1_f71bd37d18d146c19e222e89fcffe278_3' class='scFieldValue' name='fld_B72EB6696DCF41A49671972D5EA5DEB8_2163B90C08AB4A18970A7F3ECE79DCFC_en_1_f71bd37d18d146c19e222e89fcffe278_3' type='hidden' value=" Home?="">

... вместо такого рендеринга:

<li id="Home">...</li>

Теперь, как было сказано, я могу изменить свой код, чтобы не использовать CustomItemGenerator, и он отлично работает в браузере и редакторе страниц следующим образом:

GenericContentPageItem navItem = (GenericContentPageItem)e.Item.DataItem;

Item nav = Sitecore.Context.Database.GetItem(navItem.ID);
liMenuItem.ID = nav.Fields["Nav Id"].ToString();

Я бы не хотел жестко указывать имена полей в коде, поэтому я использую CustomItemGenerator. Есть ли что-то, что я делаю не так со своим кодом, что он не хочет работать в редакторе страниц?

Спасибо!


person Craig Taylor    schedule 22.08.2013    source источник


Ответы (1)


Если вам нужно фактическое значение вне поля, независимо от того, находитесь ли вы в редакторе страницы или нет, вы хотите использовать свойство Raw:

liMenuItem.ID = navItem.NavId.Raw; 
person Derek Dysart    schedule 22.08.2013