2010-08-26 85 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