C# ASP.NET MVC错误处理-在同一局部视图上显示它
我有一个类似的问题,就像上面描述的一样 我希望为控制器提供一个通用的错误处理机制,如果发生错误,我希望显示发生错误的同一视图,并向ModelState添加错误。 我有这样的想法:C# ASP.NET MVC错误处理-在同一局部视图上显示它,c#,asp.net-mvc,partialviews,C#,Asp.net Mvc,Partialviews,我有一个类似的问题,就像上面描述的一样 我希望为控制器提供一个通用的错误处理机制,如果发生错误,我希望显示发生错误的同一视图,并向ModelState添加错误。 我有这样的想法: public override void OnException(ExceptionContext filterContext) { filterContext.Controller.TempData["UnhandledException"] = filterContext.E
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.
错误消息:App_Web_dc1p1y1y.dll中发生“System.NullReferenceException”类型的异常,但未在用户代码中处理
my 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....
@model MyProject.Web.Models.UserProfileViewModel
@{
ViewBag.Title=“用户配置文件”;
}
我的个人资料
等
所以我不想重定向到某个错误视图,但我想在发生错误的samve视图上显示该错误
我做错了什么?您认为这些错误会发生在哪里?如果它在
控制器
方法中,则它可能无法决定将显示哪个视图。您最好在控制器中使用标准的try/catch
块,并在catch中使用helper方法调用addmodeleror()
错误可能发生在控制器下面的层中,例如在被调用的服务中,或者在数据库中保存某些内容时,而不是直接在控制器中。我想避免在每一个动作中尝试捕捉。。。这就是为什么我试图用一个异常或过滤来解决这个问题。。不管怎样。可能您正在按需要显示错误消息,但在index.cshtml
页面Model
中为空,并且当您尝试访问页面上的MyProject.Web.Models.UserProfileViewModel
属性时,您得到了NullReferenceException
。这是可能的。。。您是否知道如何从ExceptionContext filterContext获取模型?以及如何通过ViewResult提供它?