2010-08-26 83 views
0

在ASP.NET Web窗體,我會做到,很容易:ASP.MVC手柄錯誤

[...] 
try 
{ 
    DateTime date = Convert.ToDateTime("abc"); 
} 
catch(Exception ex) 
{ 
    lblErrorMessage.Text = ex.Message; 
} 

現在的問題是:我該怎麼辦在ASP.NET MVC一樣嗎? 我一直在尋找它,我發現的所有[HandleError]屬性。我不想重定向用戶到一個「Error.aspx」視圖,如果發生異常。我想在Web窗體中顯示相同的頁面中的錯誤消息。

任何Ideias?

回答

2
try 
{ 
    DateTime date = Convert.ToDateTime("abc"); 
} 
catch(Exception ex) 
{ 
    ViewData["Error"] = ex.Message; 
} 
return View(); 

在您的視圖或母版頁中,檢查是否設置了ViewData [「Error」]。如果是這樣,顯示您的錯誤分區。

<% if (ViewData["Error"] != null) 
{ 
    <div class="error"><%=html.encode(ViewData["Error"]) %></div> 
} 
%> 
0

創建自己的屬性,它實現了IExceptionFilter。你也可以返回相同的View,並在ViewData中設置一個值,但是一個屬性會給你一個更加標準的方式來處理它。

1
try 
{ 
    DateTime date = Convert.ToDateTime("abc"); 
} 
catch(Exception ex) 
{ 
    ModelState.AddModelError("date", ex) 
} 

然後在視圖

<%= Html.ValidationSummary() %> 
+0

我使用的ModelState與reglar(不是強類型)視圖的所有時間。 – Sruly 2010-08-26 16:25:56