asp.net-mvc-3 – System.Web.Mvc.HandleErrorInfo错误的模型类
发布时间:2020-12-15 21:07:08 所属栏目:asp.Net 来源:网络整理
导读:我创建了正确的模型类型,并不明白它的来源.有任何想法吗? 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
我创建了正确的模型类型,并不明白它的来源.有任何想法吗?
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> 解决方法
在?/ Views / Shared / Error.cshtml中替换第一行:
@model System.Web.Mvc.HandleErrorInfo 同 @model BusinessLogic.Models.ErrorCodeModel (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.Net MVC文件上传后期参数
- kendo-ui – 如何使用它的ASP MVC Complete Wrapper设置Ken
- 发布ASP.NET核心应用程序:命令“npm install”退出,代码为
- 为什么我不能在ASP.net MVC中使用服务器控件?
- asp.net-mvc – 用静态项绑定Html.DropDownList
- asp.net-mvc – ASP.NET MVC是否可以从数据库中提取的模板中
- asp.net-mvc – HttpContext和HttpContextWrapper之间的区别
- asp.net-mvc – 为MVC3 DateTime设置DataFormatString
- asp.net-mvc – 支持URL中任何位置的catch-all参数的Asp.ne
- asp.net-core-mvc – 如何在多种环境下管理ASP.NET Core bu
推荐文章
站长推荐
- 如何在ASP.Net项目中包含jQuery?
- 看看.NET Core几个Options的简单使用
- asp.net-mvc – asp.net mvc区域的默认页面
- ASP.NET CodeFileBaseClass属性与从System.Web.U
- 如何使非常简单的ASP.Net密码保护页面
- 部署ASP.Net MVC应用程序的最便宜的方法是什么?
- IIS上的ASP.NET Core 2.0错误502.5
- asp.net-mvc – ALTER TABLE DROP COLUMN失败,因
- asp.net – 从SignalR Hub调用方法的问题.调用失
- asp.net-mvc-4 – 如何将新的支付网关集成到[Nop
热点阅读