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. Есть ли что-то, что я делаю не так со своим кодом, что он не хочет работать в редакторе страниц?
Спасибо!