按项目ID检索项目(页面)是否有任何问题?
我能想到的唯一情况是客户删除页面并重新添加...
Normaly我们使用TDS或db副本来更新我们的数据库
答案 0 :(得分:4)
不,按ID访问项目没有问题。这是首选方法,因为路径可以比ID更容易地改变。作者更有可能重命名或移动项目(或祖先),而不是删除和重新创建项目。
我们通常每个安装(或有时每个网站)有一个项目,其中包含指向其他关键项目的许多树状态字段(例如搜索结果页面,其他设置项目等)。我们将此全局链接项的ID存储在配置文件中,然后使用Glass Mapper或Custom Item Generator为其设置模型类。这允许我们得到这样的好语法:
var searchPage = ClientName.Configuration.Settings.GlobalLinks.SearchResultsPage;
答案 1 :(得分:1)
通过id检索没有问题。它们最适合用于您使用它们的范围内的独特含量。在您的代码中,存在可读性问题,但您可以创建一个静态ID类来减轻这种情况。请参阅Sitecore.ItemIDs
和Sitecore.TemplateFieldIDs
作为示例。
答案 2 :(得分:0)
如果可能的话,我会尽量避免过度依赖使用物品ID,但正如其他答案所述,这将有效。如果您这样做,最好考虑为代码中引用ID的任何项设置安全限制,以防止用户删除它们(这不会阻止用户编辑它们。)
另一个选项可以是使用模板ID。编写一些可以按模板ID检索项目/后代的扩展方法非常简单,这可以使您的解决方案更加健壮。