System.Web.Mvc.HandleErrorInfo 模型类型错误

2024-03-04

我创建了正确的模型类型,但不明白它来自哪里。有任何想法吗?



System.InvalidOperationException: The model item passed into the dictionary is of type 'System.Web.Mvc.HandleErrorInfo', 
but this dictionary requires a model item of type 'BusinessLogic.Models.ErrorCodeModel'.
   at System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value)
   at System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary)
   at System.Web.Mvc.WebViewPage`1.SetViewData(ViewDataDictionary viewData)
   at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
   at System.Web.Mvc.Controller.ExecuteCore()
   at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
   at System.Web.Mvc.MvcHandler.c__DisplayClass6.c__DisplayClassb.b__5()
   at System.Web.Mvc.Async.AsyncResultWrapper.c__DisplayClass1.b__0()
   at System.Web.Mvc.MvcHandler.c__DisplayClasse.b__d()
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
  

在 global.asax.cs 中我注册了一个自定义属性:



        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new Controllers.ExtendendHandleErrorAttribute());
        }
  

定义如下:



public class ExtendendHandleErrorAttribute : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {                                   
            LogErrors(filterContext);
            try
            {
                base.OnException(filterContext);

                var typedResult = filterContext.Result as ViewResult;
                if (typedResult != null)
                {
                    var tmpModel = typedResult.ViewData.Model;
                    typedResult.ViewData = filterContext.Controller.ViewData;
                    typedResult.ViewData.Model = CreateModel(filterContext);
                    filterContext.Result = typedResult;
                }
            }
            catch(Exception ex) 
            {
                new LogManager().Log("ExtendendHandleErrorAttribute error", ex);
            }
        }
  

有趣的是,我创建了 ErrorCodeModel。



        private ErrorCodeModel CreateModel(ExceptionContext filterContext)
        {
            var model = new ErrorCodeModel(); 

            if (filterContext.HttpContext.Session != null)
            {
                var session = filterContext.HttpContext.Session;

                model.SessionId = session.SessionID;
                StateHandler stateHandler = new StateHandler(session);
                model.FapiErrorCode = stateHandler.CustomErrorCode.ToString();               
                try
                {                    
                    model.GlobalData = new GlobalDataBuilder(stateHandler).Build();
                    model.ErrorMessage = model.GlobalData.ErrorText.TechnicalError;
                }
                catch { }
            }

            return model;
        }
  

我的 Web.config



<customErrors mode="Off" defaultRedirect="Error">
      <error statusCode="404" redirect="Error/FileNotFound" />
    </customErrors>
  

In ~/Views/Shared/Error.cshtml替换第一行:

@model System.Web.Mvc.HandleErrorInfo

with

@model BusinessLogic.Models.ErrorCodeModel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.Web.Mvc.HandleErrorInfo 模型类型错误 的相关文章

随机推荐

  • WordPress Ajax 调用 -- WordPress 用户 ID

    我正在开发一个基于 Wordpress 的网站 我对这个网站还很陌生 基本上 我们使用插件来跟踪网站上的 积分 并且我使用调用来获取游戏用户的 WordPress ID 然而 问题是 当我进行 ajax 调用时 它会返回用户 ID 0 也称
  • Flutter 堆栈大小到同级

    有没有办法自动将堆栈子级的大小调整为其最大的兄弟级 IE 如果我有一个Stack with a ListTile and a Container最上面 我如何确保Container覆盖整个ListTile 例子 new Stack chil
  • 如何返回静态数组指针

    我正在尝试创建一个函数来创建具有默认值的二维数组 然后 该函数应该返回该静态数组的指针 int novoTabuleiro static int novoTabuleiro LINHAS COLUNAS Some changes retur
  • 动态添加组件到Wicket中的ListView

    我想制作一个带有 添加 按钮的表单 按 添加 按钮后 新面板将添加到检票口 ListView 元素 我怎么做 我希望能够添加无限数量的行 EDIT 交互式面板页面 html table tr td a href Add Panel a td
  • 即使不进行任何更改也无法快进

    我最终陷入了一个奇怪的 git 状态 我想从服务器拉取 仅快进 然而 即使没有任何变化 git 仍然告诉我 不可能快进 git pull v ff only From github com username repo up to date
  • CSS 句子首字母大写

    我想将句子的第一个字母大写 如果可能的话 也将逗号后面的第一个字母大写 我想在这里添加代码 qcont width 550px height auto float right overflow hidden position relativ
  • dcm4che 查询/检索 SCP

    首先 我是 dcm4che 的新手 没有良好的文档很难开始 因此请原谅我的无知 我必须开发一个查询 检索 SCP 并且我需要知道 doCFind 函数中由 SCU 输入的查询参数 例子 SCU 执行以下操作 dcmqr MYQR local
  • 如何撤消/恢复“npm 审核修复”

    正如标题所说 我跑了npm audit fix在命令中 现在我跑不了了npm run build因为它给了我错误 如何撤消npm audit fix 有这样的命令吗 运行后npm audit fix我收到此错误 D SUBLIME REAC
  • 如何将数据表转换为通用列表?

    目前 我正在使用 DataTable dt CreateDataTableInSomeWay List
  • Math.Abs​​(x) < double.Epsilon 是否等于 Math.Abs​​(x) == 0d?

    经过一番轻松阅读后 本文 http msdn microsoft com en us library system double epsilon 28v vs 110 29 aspx引起了我的兴趣 我本以为是的 根据 MSDN 的声明 这两
  • 如何在 Box2D 中设置形状/夹具/主体的中心

    嘿 我正在尝试集成 SFML 和 Box2D SFML 使精灵 形状等的设置中心变得非常容易 另一方面 Box2D 我遇到了麻烦 因为我不知道如何设置甚至找到形状或夹具的中心 在我看来 当手动添加顶点到 b2 PolygonShape 时
  • Bootstrap 工具提示 - 单击另一个工具提示时隐藏

    我希望有人能帮帮忙 我试图在单击另一个工具提示图标时隐藏工具提示 它有效 但是当我决定再次单击最后一个工具提示时 它会 闪烁 工具提示 var Hastooltip hastooltip HasTooltip on click functi
  • 从 Gradle 调用 Ant 任务时如何拦截或提升日志消息

    我从 gradle 脚本中调用 ant signjar 我怎样才能捕获它的输出 我既没有轻松管理它以将 INFO 的输出提升到另一个级别 也没有拦截或将错误警告的输出包装到 WARN 级别 目前 signjar 回显证书即将过期 但这并没有
  • 在剑道网格中,我可以使用函数动态设置列属性吗?

    我这里有一些代码 我试图根据数据项的值设置单元格的背景颜色 http dojo telerik com solidus flux eHaMu http dojo telerik com solidus flux eHaMu
  • jQuery 验证插件:如何验证下拉列表

    我正在尝试使用 jQuery Validate 插件来验证下拉列表 它正确验证了我表单的其余部分 但它不适用于下拉菜单 这是我的 jQuery campaignForm validate rules campaign name requir
  • 内容通过固定标头传递

    在我的 html 页面中 我用以下内容修复了标题 position fixed 当我向下滚动时 页面的内容会越过标题 我怎样才能解决这个问题 假设您的 HTML 如下 div div div div 尝试以下 CSS
  • 如何使用类型特征使数组到指针的转换明确?

    我想区分静态数组和指针 以下示例由于以下原因无法编译具有精确匹配的数组到指针转换 使两者foo的可能候选人 我能获得第二次超载吗foo使用类型特征明确选择 include
  • 静态编译libmagic(c/c++文件类型检测)

    感谢那些帮助我的人上一个问题 https stackoverflow com questions 2105816 trying to use include compile 3rd party library libmagic c c fi
  • 在 REST API 调用之前 OPTIONS 调用元

    我试图了解这个系统是如何在幕后工作的 该系统是REST基于这是相当标准的 我不明白客户做了什么OPTIONS在每次 API 调用之前调用 并以该格式返回 XML 内容 它使用 Jersey Java OPTIONS的回应DELETE met
  • System.Web.Mvc.HandleErrorInfo 模型类型错误

    我创建了正确的模型类型 但不明白它来自哪里 有任何想法吗 System InvalidOperationException The model item passed into the dictionary is of type Syste