gpt4 book ai didi

tridion - 添加事件处理程序后无法 checkout 组件或页面

转载 作者:行者123 更新时间:2023-12-02 16:57:18 25 4
gpt4 key购买 nike

我正在为 CheckOutEventArgs 添加事件处理程序,并尝试获取结账用户详细信息。下面是我的代码。

public void Subscribe()
{
EventSystem.Subscribe<Page, CheckOutEventArgs>(PageCheckOutWarning,
EventPhases.Initiated);
EventSystem.Subscribe<Component, CheckOutEventArgs>(ComponentCheckOutWarning,
EventPhases.Initiated);
}

private void ComponentCheckOutWarning(Component component,
CheckOutEventArgs args, EventPhases phase)
{
logdetails("Checkout User-->" + component.CheckOutUser.Title.ToString());
}

当我尝试 checkout 组件/页面时,我在 Tridion Explorer 错误消息框中收到此错误。

Object Reference not set to an instance of an object

最佳答案

您已订阅Initiated阶段,在此阶段项目尚未 checkout ,因此没有CheckOutUser。您应该订阅一些后续阶段。

此外,我不知道您的代码在做什么,但您可能会考虑订阅一些通用类,例如同时包含组件和页面的 VersionedItem

同样,不知道您的想法,但如果您只想收到警告,请查看 SubscribeAsync 方法。这样它会执行得更快。

如果您仍然想了解启动阶段的用户 - 您可以从 session 中获取它:component.Session.User.Title

您可以订阅 VersionedItem,然后在事件处理程序中执行以下操作:

private void CheckOutWarning(VersionedItem item, CheckOutEventArgs args, EventPhases phase)
{
if (item.GetType().Name == "Component" || item.GetType().Name == "Page")
{
}
}

您想要只是警告,还是想要阻止 CheckOut?

关于tridion - 添加事件处理程序后无法 checkout 组件或页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com