CustomItemGenerator和页面编辑器

时间:2013-08-22 21:12:37

标签: sitecore sitecore6 page-editor

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的原因。我的代码有什么问题我不想在页面编辑器中工作吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您需要字段外的实际值,无论您是否在页面编辑器中,都希望使用Raw属性:

liMenuItem.ID = navItem.NavId.Raw;