可以使用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)
});

MVC 避免黄页的更多相关文章

  1. 基于AOP的MVC拦截异常让代码更优美

    与asp.net 打交道很多年,如今天微软的优秀框架越来越多,其中微软在基于mvc的思想架构,也推出了自己的一套asp.net mvc 框架,如果你亲身体验过它,会情不自禁的说‘漂亮’.回过头来,‘漂 ...

  2. ASP.NET MVC防范CSRF最佳实践

    XSS与CSRF 哈哈,有点标题党,但我保证这篇文章跟别的不太一样. 我认为,网站安全的基础有三块: 防范中间人攻击 防范XSS 防范CSRF 注意,我讲的是基础,如果更高级点的话可以考虑防范机器人刷 ...

  3. .NET MVC Filter异常处理

    MVC程序中自带的HandleErrorAttribute,来处理异常,不在显示黄页.前提是在web.config 中 system.web中关闭customerError选项. 但是很多情况下调试异 ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)

    ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装    ...

  5. mvc自定义全局异常处理

    异常信息处理是任何网站必不可少的一个环节,怎么有效显示,记录,传递异常信息又成为重中之重的问题.本篇将基于上篇介绍的html2cancas截图功能,实现mvc自定义全局异常处理.先看一下最终实现效果: ...

  6. MVC中利用ActionFilterAttribute过滤关键字

    在开发过程中,有时候会对用户输入进行过滤,以便保证平台的安全性.屏蔽的方法有很多种,但是今天我说的这种主要是利用MVC中的ActionFilterAttribute属性来实现.由于MVC天然支持AOP ...

  7. asp.net mvc 后台怎么接受前端返回的array list dictionary

    参考了别人的文章,我这样尝试去写: 数据源:memberInRoles var memberInRoles= {}; for(var i=0;i<sureOptions.length;i++){ ...

  8. MVC 开启gzip压缩

    using System.IO; using System.IO.Compression; using System.Web; using System.Web.Mvc; public class C ...

  9. 在ASP.NET MVC自定义错误页面

    异常处理跳转页面 第一步,在项目的Web.config文件中找到节点<system.web> 在此节点下添加配置(Error为定义的控制器也可以多添加些error标签用于区分不同的错误) ...

随机推荐

  1. 使用PowerDesigner建立数据库模型

    转自:http://www.cnblogs.com/tonyepaper/archive/2008/02/12/1067260.html 1.       打开PowerDesigner,点击File ...

  2. python __enter__ 与 __exit__的作用,以及与 with 语句的关系

    转载自:http://linbo.github.io/2013/01/08/python-with/ (一直不知道博客园哪里发转载文章) With语句是什么? 有一些任务,可能事先需要设置,事后做清理 ...

  3. UEditor 使用过程中问题

    UEditor  百度的文本编辑器   具体详细信息请去百度文本编辑器官网,这里不多说了. 我使用的是 UBuilder 版本的NET版本 ,我只是需要图片上传功能,所以就做了最小化的定制.(可以在官 ...

  4. HDOJ-ACM1010(JAVA) 奇偶剪枝法 迷宫搜索

    转载声明:原文转自:http://www.cnblogs.com/xiezie/p/5568822.html 第一次遇到迷宫搜索,给我的感觉是十分惊喜的:搞懂这个的话,感觉自己又掌握了一项技能~ 个人 ...

  5. Miller-Rabin素性测试(POJ3641)

    一.概念引入 在以往判断一个数n是不是素数时,我们都是采用i从2到sqrt(n)能否整除n.如果能整除,则n是合数;否则是素数.但是该算法的时间复杂度为O(sqrt(n)),当n较大时,时间性能很差, ...

  6. Java到底是不是一种纯面向对象语言?

    本文由码农网 – Dee1024原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! Java——是否确实的 “纯面向对象”?让我们深入到Java的世界,试图来证实它. 在我刚开始学习 J ...

  7. Xamarin开发Android时Visual Studio 2012没有智能提示解决办法

    Most of the people who work with Xamarin’s Mono for Android in Visual Studio 2012 face a bug where I ...

  8. web api中post参数时只能一个

    在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明: /?id=123&name=bob void Action(int id, st ...

  9. 非常实用的Android Studio快捷键

    One—打印Log 生成tag: logt 打印log: logm logd loge Two—代码提示 Ctrl + Alt + Space Three—代码移动 选中代码: Ctrl + w 向 ...

  10. Brief描述子

    一.Brief算法 1.基本原理 BRIEF是2010年的一篇名为<BRIEF:Binary Robust Independent Elementary Features>的文章中提出,B ...