作为参考,我在Our Umbraco论坛上提出了同样的问题,但到目前为止还没有得到回复。
我们在Document-> AfterSave事件中运行代码,该事件显示一个语音气泡:
((BasePage)HttpContext.Current.Handler).speechBubble(BasePage.speechBubbleIcon.error, "Error", "Problem");
我们也试试
BasePage.Current.ClientTools.ShowSpeechBubble(BasePage.speechBubbleIcon.error, "Error", "Problem");
以防我们调用错误的API函数来显示语音泡沫。
我们在验证文档的属性并且该属性无效后执行此操作,以便通知用户出现了问题。
问题在于,即使执行了上述代码,在我们的AfterSave代码之后运行的Umbraco代码也会显示它自己的语音气泡,即“已完成”以表示文档已保存。这导致我们的讲话泡泡根本就没有显示出来。
有人可以建议我们如何展示一个不会被Umbraco自己的speeh泡泡所取代的讲话泡泡吗?
答案 0 :(得分:1)
您可以在检查失败时取消文档发布,从而停止讲话泡泡。
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");
}
}
答案 1 :(得分:1)
你可以通过在页面生命周期的后期注入你的语音气泡来解决这个问题
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");
}