asp.net mvc3有四类过滤器:授权, 操作,结果, 异常。操行的顺序为:授权,操作,结果,异常。

首先看一下TempData: 数据只能经过至多一次的Controller传递, 并且每个元素至多只能被访问一次,访问以后,自动删除。一般用于临时的缓存内容或抛出错误页面时传递错误消息,所以异常信息的传递就用TempData了。

在项目中我们只用到授权类的验证用户是否登录功能, 及异常类的错误日志记录功能。可以继承系统默认实现的抽象类AuthorizeAttribute, HandleErrorAttribute

  • 是否登录:
public override void OnAuthorization(AuthorizationContext filterContext)
{
HttpContextBase context = filterContext.HttpContext; if (null == context.Session["User"])
{
filterContext.Result = new RedirectResult("~/Home/ReLogin");
} //base.OnAuthorization(filterContext);
}
  • 异常处理
public override void OnException(ExceptionContext filterContext)
{
Exception ex = filterContext.Exception; //记录日志ex.Message
ILog log = LogManager.GetLogger("Exception");
log.Error(ex.Message);
log.Error(ex.StackTrace);
       TempData["errMsg"] = ex.Message; filterContext.ExceptionHandled = true; filterContext.Result = new RedirectResult("~/Home/ErrorMsg"); //base.OnException(filterContext);
}
  • 最后在相应的action中返回类似{success: false, errType: **, errMsg: TempData["errMsg"] as string},然后在客户端做相应处理, 这个方法比较笨啊, 客户端要做很多重复的工作, 很笨, 不过目前也只能想到这里了, 以后熟悉了再优化吧。
  • 针对是否登录, 因为在刷新时如果会话为空则会弹出登录框, 所以检测到未登录的情况,就刷新一下页面就可以了,如下:
window.location.reload();

[摘自http://msdn.microsoft.com/zh-cn/library/gg416513(v=vs.98).aspx

NSS_03 过滤器的更多相关文章

  1. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...

  2. ASP.NET Web API 过滤器创建、执行过程(二)

    ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...

  3. ASP.NET Web API 过滤器创建、执行过程(一)

    ASP.NET Web API 过滤器创建.执行过程(一) 前言 在上一篇中我们讲到控制器的执行过程系列,这个系列要搁置一段时间了,因为在控制器执行的过程中包含的信息都是要单独的用一个系列来描述的,就 ...

  4. ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之13.ABP领域层——数据过滤器(Data filters) ABP是“ASP.NET Boilerplate P ...

  5. AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter

    今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在  controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

    系列目录 上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用过了OnActionExecu ...

  7. Hawk 4.2 过滤器

    过滤器可以在流中,过滤掉不符合条件的文档.当然也可勾选反向,此时只会留下不符合条件的文档. 空对象过滤器 最为常用,需要列名,可以过滤掉所有内容为Null,或字符串全部都是空字符的情况 数值范围过滤 ...

  8. 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...

  9. 自定义jinja2 过滤器

    今天,我们要讲的是自定义jinja2 过滤器这个知识点,因为官方文档对此一代而过,讲得不够清楚,所以我们专门拿出来讲一下. 例子 例子写了两个自定义过滤器,一个是转换字典到字符串的过滤器,一个是返回当 ...

随机推荐

  1. ios 字典转模型

    <pre name="code" class="objc">#import <Foundation/Foundation.h> @int ...

  2. Python基础教程之List对象 转

    Python基础教程之List对象 时间:2014-01-19    来源:服务器之家    投稿:root   1.PyListObject对象typedef struct {    PyObjec ...

  3. 关于php配置文件

    一:配置文件(php.ini)在 PHP 启动时被读取.对于服务器模块版本的 PHP,仅在 web 服务器启动时读取一次.对于 CGI 和 CLI 版本,每次调用都会读取. 二:Note that t ...

  4. Linux编程之《守护进程》

    Intro ----- 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常 ...

  5. css笔记06:层叠样式选择器

    1. (1)HTML文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  6. python(4)–yield实现异步

    首先我们假设一个情景:一个人做包子,一次只能做一个:来了两个吃包子的,做包子做好了包子依次分给两个吃包子的. 先上代码: import time ''' 一个做包子吃包子模型,一个做包子的,两个吃包子 ...

  7. js常用代码收藏

    --1.遍历string分割为数组 <script language="javascript"> str="2,2,3,5,6,6"; //这是一字 ...

  8. HTML5 indexedDB数据库的入门学习(二)

    上一篇关于indexedDB的学习笔记主要写了indexedDB数据库的基本操作—增删改查:但是为什么我们要用indexedDB呢?为什么indexedDB受到了开发者们的青睐呢?最主要的就是inde ...

  9. CF Fox And Two Dots (DFS)

    Fox And Two Dots time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  10. Netbackup备份失败:ORA-19506 ORA-27028 ORA-19511

    Netbackup之前备份RAC数据一直都非常正常,突然这几天出现异常: channel ch00: starting piece 1 at 2013-11-24:18:02:32released c ...