可以使用HandleErrorAttribute

有两种方式可以使用它,在类或者方法的头上加 [HandleError]

这种直接在类或者方法上加[HandlerError]手动添加

另外一种方式是使用Global Filters功能来注册,默认的mvc3.0以上都在Global.asax文件已经默认在新建的mvc项目的这个文件已经添加

  public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//整个程序所有控制器都使用HandlerError来处理错误
//不过它只处理500系列错误,404类型需要单独处理
filters.Add(new HandleErrorAttribute());
}

下一步:需要开启根目录的web.config下customErrors节点(是根目录,不是views目录下的web.config)

在web.config文件的  <system.web>节点里:

<customerrors mode="On" defaultredirect="~/Error/HttpError">
<error redirect="~/Error/NotFound" statuscode="404" />
</customerrors>

注意:defaultredirect 定义的是所有错误页面转向的错误页面地址,而error 节点元素就是单独定义不同的错误页面转向地址,上面的error行就是定义的404类型转向的地址

最后一件事:定义具体错误页面ErrorController

public class ErrorController : Controller
{
public ActionResult HttpError()
{
return View("Error");
}
public ActionResult NotFound()
{
return View();
}
public ActionResult Index()
{
return RedirectToAction("Index", "Home");
}
}

可以修改~/Views/Shared/Error.cshtml

@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "General Site Error";
}

<h2>A General Error Has Occurred</h2>

@if (Model != null)
{
<p>
@Model.Exception.GetType().Name<br />
thrown in @Model.ControllerName @Model.ActionName
</p>
<p>Error Details:</p>
<p>@Model.Exception.Message</p>
}

另外也可以通过传递参数来重写GlobalFilter里的HandleErrorAttribte注册,单独声明一个特定的Exception,并且带有Order参数,当然也可以连续声明多个,这样就会多次处理。

例如:

//也可以通过传递参数来重写GlobalFilter里的HandleErrorAttribte注册,单独声明一个特定的Exception,并且带有Order参数,当然也可以连续声明多个,这样就会多次处理

filters.Add(new HandleErrorAttribute()
{
Order = 2,
//这个view是shared目录下的view,表示通用共享
View = "OtherView",
ExceptionType = typeof(YourExceptionHere)
});

最新文章

  1. Angular2入门系列教程3-多个组件,主从关系
  2. 如何开启MySQL 5.7.12 的二进制日志
  3. Kali Linux additional tools setup
  4. 浅析 IDE跟编译器
  5. [BZOJ1116][Poi2008]LCO(并查集)
  6. [日常训练]常州集训day3
  7. openPOWERLINK开源POWERLINK协议栈说明文档中文非官方翻译
  8. DataTable.Compute方法使用实例
  9. HDU 2817 A sequence of numbers 整数快速幂
  10. 关于Chrome(谷歌浏览器)对docume,准确获取网页客户区的宽高、滚动条宽高、滚动条Left和Top
  11. QT进度条QProgressBar的练习
  12. --@ui-router——$state服务原版详解
  13. java抽象类和抽象方法之间的关系
  14. 0基础搭建Hadoop大数据处理-环境
  15. CDQ分治小结
  16. script标签的同步和异步
  17. Echarts动态加载柱状图和折线图混合展示的实例
  18. java类的泛型DAO
  19. xcopy命令的其他参数
  20. Spring 框架的 applicationContext.xml 配置文件

热门文章

  1. AndroidStudio旧模板使用方法
  2. Java HTTP请求
  3. zookeeper环境的搭建
  4. Fatjar成功安装记录
  5. image sensor 积分时间
  6. #pragma once
  7. Mac中下载JDK手动更新出现“只支持10.7.3以上的系统版本”问题解决方案
  8. 嵌套在母版页中的repeater自动生成控件ID
  9. poj 2325 Persistent Numbers (贪心+高精度)
  10. map的基本操作函数及含义