0

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 的原因。我的代码是否有一些我不想在页面编辑器中工作的错误?

谢谢!

4

1 回答 1

1

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

liMenuItem.ID = navItem.NavId.Raw; 
于 2013-08-22T21:44:45.327 回答