0

当页面或组件被签出时,我试图在Tridion 消息栏中显示警告消息。

我已订阅并尝试使用(已处理和已启动)阶段,并尝试订阅和 SubscribeAynsc。

下面的订阅者行:

EventSystem.Subscribe<VersionedItem, CheckOutEventArgs>(displaymessage, EventPhases.Processed);

功能如下:

public override void displaymessage(VersionedItem item, TcmEventArgs args, EventPhases phase)
    {
        if (item.GetType().Name == "Component" || item.GetType().Name == "Page")
        {
            string chkuser = "aa"               ;
            sting revisor = "bb"
            if(chkuser  != revisor
               {
                   throw new Exception("Warning-->some one is already modified this item and u are checking out now");
               }

        }
    }

如果结帐用户和修订者不同,我想显示警告消息。我将很快获取结帐用户和修订者的详细信息并进行比较。

问题:

  1. 当我选择任何项目并单击“签出”时,上面的代码会在 Tridion 消息栏中显示消息。同时,该项目不处于编辑模式,它处于只读模式。
  2. 当我选择任何项目并单击“打开”或双击该项目时,会触发结帐事件,但消息不会显示在消息栏中。并且该项目仍然是只读模式。
  3. 如果我在代码中使用 try{}Catch{},当到达“抛出新异常”行时,代码会自动进入 catch 块。即使在“第一个(问题:1)”情况下也不会显示消息。

任何人都可以对此有所了解吗?那很好啊!!

4

1 回答 1

1

当您在事务提交之前抛出异常时,它会回滚。如果这会起作用,您需要在 TransactionCommitted 阶段执行您的逻辑。

但更重要的是,我建议不要滥用异常消息来提供状态消息。你想达到什么目的?

于 2012-09-13T10:59:09.323 回答