Обработка ошибок ASP.NET MVC - отображать ее в том же частичном представлении
У меня похожая проблема, как описано здесь. Я хотел бы иметь обобщенный механизм обработки ошибок для контроллеров, если возникает ошибка, я хотел бы отобразить то же представление, где произошла ошибка с добавленными ошибками в ModelState. У меня есть что-то вроде этого:
public override void OnException(ExceptionContext filterContext)
{
filterContext.Controller.TempData["UnhandledException"] = filterContext.Exception;
filterContext.ExceptionHandled = true;
((Controller)filterContext.Controller).ModelState.AddModelError(
((BaseException)filterContext.Exception).Message,
((BaseException)filterContext.Exception).StackTrace
);
filterContext.Result = new ViewResult
{
ViewName = this.View,
TempData = filterContext.Controller.TempData,
ViewData = filterContext.Controller.ViewData,
};
}
Но я получаю исключение нулевой ссылки в Index.cshtml ln. 3 Сообщение об ошибке: исключение типа "System.NullReferenceException" возникло в App_Web_dc1p1y1y.dll, но не было обработано в коде пользователя
код из моего index.cshtml:
@model MyProject.Web.Models.UserProfileViewModel
@{
ViewBag.Title = "User profile";
}
<section>
<div class="noPadding">
<div class="col-xs-12 noPadding">
<h2>My profile</h2>
</div> etc....
Поэтому я не хочу перенаправлять в какое-либо представление "Ошибка", но я хотел бы отобразить ошибку в представлении "samve", где оно произошло.
Что я делаю неправильно?