Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC错误处理-在同一局部视图上显示它_C#_Asp.net Mvc_Partialviews - Fatal编程技术网

C# ASP.NET MVC错误处理-在同一局部视图上显示它

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

我有一个类似的问题,就像上面描述的一样 我希望为控制器提供一个通用的错误处理机制,如果发生错误,我希望显示发生错误的同一视图,并向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. 错误消息: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提供它?