Sitecore 6.6 Update 4
我们正在使用CustomItemGenerator 1.0,而我正在使用它来帮助构建网站的主导航菜单。这按预期工作,一切都正确呈现。
我的问题是当我尝试通过页面编辑器编辑菜单时;我甚至没有看到菜单。
我使用转发器并重复链接列表以包含在导航中。由于HTML的创建方式,每个LI
元素都需要在CSS中拥有自己的特定ID(Sitecore中的“Nav Id”字段)。我的转发器的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的原因。我的代码有什么问题我不想在页面编辑器中工作吗?
谢谢!
答案 0 :(得分:1)
如果您需要字段外的实际值,无论您是否在页面编辑器中,都希望使用Raw
属性:
liMenuItem.ID = navItem.NavId.Raw;