Api 如何阻止Umbraco显示语音气泡?

Api 如何阻止Umbraco显示语音气泡?,api,umbraco,Api,Umbraco,作为参考,我在论坛上提出了同样的问题,但迄今没有收到任何答复 我们在Document->AfterSave事件中运行代码,该事件显示语音气泡: ((BasePage)HttpContext.Current.Handler).speechBubble(BasePage.speechBubbleIcon.error,“error”,“Problem”) 我们也尝试 BasePage.Current.ClientTools.ShowSpeechBubble(BasePage.speechBubbleI

作为参考,我在论坛上提出了同样的问题,但迄今没有收到任何答复

我们在Document->AfterSave事件中运行代码,该事件显示语音气泡:

((BasePage)HttpContext.Current.Handler).speechBubble(BasePage.speechBubbleIcon.error,“error”,“Problem”)

我们也尝试

BasePage.Current.ClientTools.ShowSpeechBubble(BasePage.speechBubbleIcon.error,“error”,“Problem”)

以防我们调用错误的API函数来显示语音气泡

我们在验证文档的属性并且该属性无效后执行此操作,以便通知用户有问题

问题是,即使执行了上述代码,在我们的AfterSave代码之后运行的Umbraco代码也会显示它自己的语音气泡,该气泡表示“已完成”,以指示文档已保存。这导致我们的语音泡泡根本没有被显示出来


有人能建议我们如何显示一个不会被翁布拉科自己调用的speeh bubble覆盖的语音冒泡吗?

当您的检查失败时,您可以通过取消文档发布来停止语音冒泡

     void Document_BeforePublish(Document sender, umbraco.cms.businesslogic.PublishEventArgs e)
     {    
         if(!passed){
             e.Cancel = true;
             ((BasePage)HttpContext.Current.Handler).speechBubble(BasePage.speechBubbleIcon.error, "Error", "Problem");
         }
     } 

您可以通过在页面生命周期的后面注入您的语音气泡来解决这个问题,就像这样

var page = HttpContext.Current.Handler as Page;
if (page != null)
{
    page.PreRenderComplete += AddAlertBubble;
}
AddAlertBubble函数就是您已经拥有的:

void AddAlertBox(object sender, EventArgs e)
{
    umbraco.BasePages.BasePage.Current.ClientTools.ShowSpeechBubble(umbraco.BasePages.BasePage.speechBubbleIcon.error, "Error", "Problem");
}

需要注意的是,对于文档,代码必须在
AfterSave
事件中运行。我现在还记得,我曾尝试在
AfterSave
中设置
e.Cancel=true
,但没有任何区别。原因是,在Umbraco代码本身中,在调用
AfterSave
后,它们根本不处理
e.Cancel
——它被忽略。干杯翁布拉科:)为答案干杯。我不再做那个项目了,所以不幸的是我不能尝试:(虽然看起来很有希望,所以谢谢你)。