5

我试图弄清楚如何在自定义后端检查组件是否为空(例如,在 Tridion 中找不到)。除了捕获错误之外,我只是不知道如何检查这一点。

Component comp = (Component)session.GetObject(base.ComponentUri);

if (component != null)
{
    bool isCheckedOut = component.IsCheckedOut;
}
else
{
    // how do I get in here!
}

我 100% 确定 uri 是正确的('tcm:113-438134')并且 100% 确定 Tridion 中没有具有该 URI 的项目。上面的代码会在 component.IsCheckedOut 处抛出错误:

The item tcm:113-438134-16 does not exist.

如何检查 Tridion 项目的存在?我已经尝试将演员表放在最后,但这并没有太大帮助:

Component comp = session.GetObject(base.ComponentUri) as Component;

而且我尝试过根本不进行投射,而是使用 IdentifiableObject,这也没有任何区别。任何人都知道如何做到这一点?

4

1 回答 1

10

这是因为 Tridion 的延迟加载 - 如果 URI 看起来有效,它将永远不会返回空对象。您可以使用session.IsExistingObject(TcmUriOrWebdavUrl)来检查对象是否存在。

和...

我相信你会期待这个...

在自定义后端

您不能将 TOM.NET API 用于模板和事件系统以外的进程。请改用核心服务 API。

于 2012-07-10T11:57:14.657 回答