2012-07-09 61 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