api - Tridion 2011 - Engine.GetObject 重载

标签 api tridion tridion-2011

我发现旧的 VBScript API 和 .Net API 之间存在以下差异:

在旧的 VBScript API 中,可以调用“TDSE.getObject”来检索通过 webdav 路径传递的 Tridion 对象,一个整数来选择如何打开它(只读,读写等)以及包含我们想要的蓝图的确切元素的出版物。

在新的 .Net API 中,我只找到“Engine.GetObject”,但它只接收元素的 TCM ID 或 webdav 路径。

我们的场景如下;在旧的 VBScript 代码中,这种 getObject 方法的重载用于避免在使用 TCM ID 而不是 webdav 路径时检测到的一些权限问题,因为当您需要在不同环境之间复制代码时,它会更加方便(参见 DEV,PREPROD和 PROD),避免更改 TCM ID。

所以我的问题是:

  1. 在新的 .Net API 中是否有像旧的那样重载?
  2. 如果没有,是否有一种方法可以通过 webdav 检索项目,同时记住其中一些项目可以本地化并从其父级更改? (旧方法适用于此,如果您发送根 webdav 路径,即使它们的名称与父对象的名称不完全相同,它也会检索本地对象)

谢谢!

最佳答案

您是否希望能够使用顶级项目的 webdav url,并指定从中获取该项目的发布 ID?

我会在 Engine 上创建一个扩展方法来为您执行此操作:

public static T GetObject<T>(this Engine engine, string webDavUrl, int publicationId)
    where T : IdentifiableObject
{
    [logic to retreive the item and then if needed
     get the correct tcm uri and get the intended item]

    return item as T;
}

但是,这是一项相当昂贵的操作,因为您得到的是两个对象而不是一个。所以我不知道我是否会经常使用这种方法。

关于api - Tridion 2011 - Engine.GetObject 重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614241/

相关文章:

api - 谷歌分析 API,如何提取特定页面的综合浏览量?

tridion - 在 Tridion GUI 中右键单击时出现错误的弹出窗口

tridion - SDL Tridion 2011 粘贴特殊功能

javascript - 自动从 Dynamics 365 和 Azure 更新外部数据库

django - Pinterest API板分页

c# - 如何在 ASP.Net 中设计公共(public) API?

tridion - 如何在 Tridion Web GUI 的弹出窗口中获取完整的嵌入字段值集?

tridion - 如何自动更新通讯组列表扩展字段值?

tridion - 如何在 SDL tridion 网站中实现 Google Analytics?

tridion - 防止插入组件和模板的相同组合 :