2012-07-09 39 views
0

我想在我的MVC项目中实现一个错误处理机制。我正在寻找一种在同一页面上向用户显示错误消息的方法。我试过 -从Action返回ActionResult执行JavaScript

returning JavaScript(..) - 然而,正如我打电话通过ActionLink的,而不是Ajax.I的行动,可能已经产生的错误不能把它通过Ajax,这并不工作,即使在页面加载的第一次。

returning Content(..) - 这并不显示一个警告或者

我在一个catch块做到这一点 -

public ActionResult Index() 
{ 
    try 
    { 
     //something that generates an exception 
    } 
    catch(Exception e) 
    { 
     //show an alert with the error through JS 
    } 
} 

是否有执行JavaScript不使用显示错误给用户的任何方式Ajax调用来执行操作?

回答

1

你可以做这样的事情

catch(Exception e) 
    { 
     ViewBag.Error = "error:" + e.ToString(); 
    } 

    return View(); 

在你看来像绑定

<%if(ViewBag.Error != null) 
    {%> 
     <script type="text/javascript"> 
     alert('<%=ViewBag.Error%>'); 
     </script> 
    <%}%> 
+0

我要送这个错误信息给父控制器来显示。因此将其存储在此控制器的ViewBag中将不起作用。并且重新传递给父控制器,但作为参数传递的错误也不起作用。我一直在想,而JS似乎是现在唯一的出路。 – neuDev33 2012-07-09 21:50:56

+0

ViewBag在ControllerBase中,因此它应该对任何继承的控制器都可见。无法将此消息发送给家长控制员,你的意思是什么?如果处理该请求的控制器是从Parent继承的,则父控制器应该可以访问您在子控制器中ViewBag中的任何值。你能向你展示控制器类的层次吗? – 2012-07-09 21:58:50