2010-08-26 3 views
0

В веб-форм ASP.NET, я бы выполнить это легко:ASP.MVC ошибки ручки

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

Теперь вопрос: Как я могу сделать то же самое в ASP.NET MVC? Я искал его, и все, что я нашел, - это атрибут [HandleError]. Я не хочу перенаправлять пользователя в «Error.aspx», если возникает исключение. Я хочу показывать сообщения об ошибках на той же странице, что и в веб-формах.

Любые идеи?

ответ

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

На вашей странице просмотра или главной странице проверьте, установлена ​​ли ViewData ["Error"]. Если это так, отобразите свою ошибку div.

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

Создайте свой собственный атрибут, который реализует IExceptionFilter. Вы также можете вернуть тот же вид и установить значение в ViewData, но атрибут даст вам более стандартный способ его обработки.

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

затем в представлении

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

Я использую ModelState с reglar (не сильно типизированных) рассматривает все время. – Sruly

Смежные вопросы