【问题标题】:Umbraco Event handler - Raise Custom UI Error messageUmbraco 事件处理程序 - 引发自定义 UI 错误消息
【发布时间】:2015-04-19 09:41:02
【问题描述】:

我正在使用 Umbraco 7.2.4.

我添加了发布事件的功能。

当我的代码中存在异常时,如何引发自定义错误消息,并将其显示给用户?

我已经尝试了以下代码:

var clientTool = new Umbraco.Web.UI.Pages.ClientTools((System.Web.UI.Page)HttpContext.Current.CurrentHandler);
clientTool.ShowSpeechBubble(SpeechBubbleIcon.Error, "Choose first a content page", "Page has not been added.");

但它会引发以下异常:

无法将“System.Web.Http.WebHost.HttpControllerHandler”类型的对象转换为“System.Web.UI.Page”类型

我在这里做错了什么? 或者,还有其他方法可以引发自定义错误吗?

【问题讨论】:

  • 不幸的是,在 Umbraco 7 中没有简单的方法来添加自定义错误消息。但是,有一种解决方法是拦截对 API 的请求并修改默认错误消息。请参阅this thread 中描述的 WebApiHandler 以及使用 AdditionalData 属性的技术。

标签: c# asp.net-mvc error-handling event-handling umbraco7


【解决方案1】:

您需要在控制器中捕获错误或进行空值检查(如果 a == null),如果确实发生,则返回显示错误的视图。喜欢:

if(myValue == null)
{
    return View("~/Views/ErrorView.cshtml", model);
}

try{
    //try do something
}
catch(Exception e){
    //log your exception
    return View("~/Views/ErrorView.cshtml", model); // Model is Umbraco.Web.Models.RenderModel

}

还要检查 MVC 中的 TempData。

【讨论】:

  • 我不想要错误页面。我希望页面上出现错误通知,例如出现 umbraco 错误或保存事件时。
  • 是的,这就是我说要查看 TempData 的原因。您可以在控制器中执行 TempData["errorMessage"] = "my message",然后返回 currentPage 并在 TempData["errorMessage"] 中显示任何值 - 我将尝试提供一个很好的示例
  • 看看pastie.org/10696209#1 - 这是我目前正在从事的一个项目的一个例子。在您的视图/页面上,您只需显示 TempData 中的值。我希望这就是你要找的。​​span>
猜你喜欢
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
相关资源
最近更新 更多