Sitecore - 硬编码项ID

时间:2013-11-21 22:19:02

标签: sitecore

按项目ID检索项目(页面)是否有任何问题?

我能想到的唯一情况是客户删除页面并重新添加...

Normaly我们使用TDS或db副本来更新我们的数据库

3 个答案:

答案 0 :(得分:4)

不,按ID访问项目没有问题。这是首选方法,因为路径可以比ID更容易地改变。作者更有可能重命名或移动项目(或祖先),而不是删除和重新创建项目。

我们通常每个安装(或有时每个网站)有一个项目,其中包含指向其他关键项目的许多树状态字段(例如搜索结果页面,其他设置项目等)。我们将此全局链接项的ID存储在配置文件中,然后使用Glass Mapper或Custom Item Generator为其设置模型类。这允许我们得到这样的好语法:

var searchPage = ClientName.Configuration.Settings.GlobalLinks.SearchResultsPage;

答案 1 :(得分:1)

通过id检索没有问题。它们最适合用于您使用它们的范围内的独特含量。在您的代码中,存在可读性问题,但您可以创建一个静态ID类来减轻这种情况。请参阅Sitecore.ItemIDsSitecore.TemplateFieldIDs作为示例。

答案 2 :(得分:0)

如果可能的话,我会尽量避免过度依赖使用物品ID,但正如其他答案所述,这将有效。如果您这样做,最好考虑为代码中引用ID的任何项设置安全限制,以防止用户删除它们(这不会阻止用户编辑它们。)

另一个选项可以是使用模板ID。编写一些可以按模板ID检索项目/后代的扩展方法非常简单,这可以使您的解决方案更加健壮。