Sitecore 6.6 更新 4
我们正在使用 CustomItemGenerator 1.0,我正在使用它来帮助构建站点的主导航菜单。这按预期工作,一切都正确渲染。
我的问题是当我尝试通过页面编辑器编辑菜单时;我什至没有看到菜单。
我使用中继器并重复包含在导航中的链接列表。由于 HTML 的创建方式,每个LI
元素都需要有自己的特定 ID(Sitecore 中的“Nav Id”字段)与 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 的原因。我的代码是否有一些我不想在页面编辑器中工作的错误?
谢谢!