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