The model item passed into the dictionary is of type ‘System.Web.Mvc.HandleErrorInfo’,but this dictionary requires a model item of type ‘LayoutPageviewmodel’
我明白了这个错误发生的原因(因为控制器试图将HandleErrorInfo类型的模型传递给原始视图)但我无法弄清楚的是如何阻止此错误出现在事件查看器中并显示真正的错误.
所以事件的顺序是:
>应用程序中发生异常
>默认错误处理尝试将类型为“System.Web.Mvc.HandleErrorInfo”的模型传递到默认布局页面,该页面接受“LayoutPageviewmodel”模型
>应用程序中发生另一个异常,因为布局正在传递“HandleErrorInfo”类型的模型
>命中自定义错误500页(在web.config中指定),它不引用任何布局:
@{ Layout = null; }
>错误页面显示正确但事件查看器中的异常不正确.
我已经尝试在Application_Start中设置HandleErrorAttribute过滤器的主和视图,但是它会停止在事件日志中注册的任何内容.我也试过将以下方法添加到控制器中……
protected overrIDe voID OnException(ExceptionContext filterContext){ filterContext.Result = new VIEwResult { VIEwname = "~/VIEws/Shared/Error.csHTML",};}
但这与HandleErrorAttribute解决方法具有相同的结果.
有谁知道如何解决这个问题?
解决方法 听起来您遇到了二次错误,这使得最终结果成为基于类型的问题.在尝试其他方法来处理异常之前,请先查看显示异常的方式.
你怎么知道第一次出现正确的错误页面?
错误页面包含哪些内容,其他任何内容都会触发错误?
知道你说错误页面没有参考布局页面.将仔细检查这实际上是否正在使用,而不仅仅是在第二个实例中调用,交替从主要删除布局以确保.
确保您的错误页面始终具有自己的简化布局页面,因此不存在由于强类型布局/母版页而导致问题的风险,这将导致与您的类似错误.
总结以上是内存溢出为你收集整理的c# – 传递给字典的模型项是’System.Web.Mvc.HandleErrorInfo’类型,但是这个字典需要一个类型的模型项全部内容,希望文章能够帮你解决c# – 传递给字典的模型项是’System.Web.Mvc.HandleErrorInfo’类型,但是这个字典需要一个类型的模型项所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)