asp.net-mvc-4 – 使用ELMAH和ajax在ASP.Net MVC 4中的Controlle
发布时间:2020-12-16 06:49:28 所属栏目:asp.Net 来源:网络整理
导读:我已经看过很多帖子和文章但是我无法清楚地看到解决方案. 我已经通过NuGet安装了Elmah.MVC,并从FilterConfig.cs注释掉了这一行: //filters.Add(new HandleErrorAttribute()); 这样Elmah就会发现错误. 它在我提供无效的操作名称时起作用,我得到一个黄页和一
我已经看过很多帖子和文章但是我无法清楚地看到解决方案.
我已经通过NuGet安装了Elmah.MVC,并从FilterConfig.cs注释掉了这一行: //filters.Add(new HandleErrorAttribute()); 这样Elmah就会发现错误. 它在我提供无效的操作名称时起作用,我得到一个黄页和一封电子邮件. 我想知道我的代码可能生成的其他两种类型的错误…我们应该如何处理它们: 1.E.g.如果我的存储库或经理(业务逻辑)层在尝试访问数据库或发送电子邮件等时抛出异常. 一个.是不是在控制器(或其他任何地方)实现任何类型的try catch的正确方法,让Elmah处理异常? 湾如果是这样,如果它显示黄色错误页面,我们如何显示我们自己喜欢的视图? 2.如果我的观点包含ajax调用,例如通过jqgrid,在幕后有错误,我注意到他们也被Elmah正确选中了.但是,我如何向用户显示某种错误消息呢? 谢谢 解决方法
这是我做的:
在控制器中,我放置了try catch: try { //model = getmodelfromdb(); return View("MyView",model); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return View("../Error/ShowException",ex); } 对于404的自定义视图,我在global.asax中执行了此操作: protected void Application_OnError( ) { var exception = Server.GetLastError( ); Elmah.ErrorSignal.FromCurrentContext().Raise(exception); Helper.SetSessionValue(SessionKeys.EXCEPTION,exception); Response.Redirect( "~/Error/ShowException"); } 对于jqgrid,我在我的控制器中执行了此操作: [HttpPost] public ActionResult ListRecords( int page,DateTime? fromdate,DateTime? todate) { try { var list = FetchListFromDB(); var result = new { total = Math.Ceiling(list.Count / (decimal)Helper.PAGE_SIZE),page = page,//--- current page records = list.Count,//--- total items rows = list.List.Select(x => new { id = x.EntityID,cell = new string[] { x.Property1,x.Property2 } }).ToArray() }; return Json(result,JsonRequestBehavior.AllowGet); } catch (Exception ex) { var result = new { errorMessage = "An unexpected error occurred while fetching data. An automatic email has been generated for the support team who will address this issue shortly. Details: " + ex.Message,records = 0 }; Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return Json(result,JsonRequestBehavior.AllowGet); } 这在视图中(在jqgrid定义中): loadComplete:function(data) { if (data.errorMessage) { alert(data.errorMessage); } }, 在一般的ajax场景中: success: function(data) { if (data.errorMessage) { alert(data.errorMessage); } else { //... } }, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 【ASP.NET】12.ASP.NET Web开发实现log日志打印
- 如何在ASP.NET网页中嵌入代码块?
- asp.net-mvc-3 – ASP.NET MVC 3,RavenDB和Autofac Issue P
- ASP.NET MVC3模型验证DataAnnotations使用客户端验证执行小
- asp.net-mvc-3 – Razor MVC 3 RC2 – 带动态文本的WebGrid
- 如何使用UTC时间(asp.net和ajax)向用户呈现本地时间
- asp.net-mvc – 存储库模式:好还是坏?
- asp.net – 如何禁用提交行为的asp:ImageButton?
- asp.net-mvc – 如何在不同的控制器中管理MVC区域和RenderA
- ASP.NET UpdatePanel和Javascript __dopostback
推荐文章
站长推荐
- asp.net-mvc – Domain Driven Design新手,请简要
- ASP.NET会话Cookie – 指定基础域
- asp.net – 单选按钮而不是下拉列表在mvc 3应用程
- asp.net – 在负载均衡器上启用粘性会话
- asp.net – 你如何’规范’一个Web服务器来支持给
- asp.net-mvc – mvc局部视图帖子
- asp.net – 与Entity Framework中的联结表有多对
- asp.net-mvc – ASP.NET MVC6中的实体框架7多个外
- 谈谈基于SQL Server 的Exception Handling
- asp.net – 为什么aspnet_users使用guid来代替id
热点阅读