感谢好朋友wolfy在园子里的很多有价值的文章,方便了很多朋友,向榜样学习,开始自己的总结之旅:)

遇到问题

1.http://q.cnblogs.com/q/67382/#a_150210

//添加自定义过滤器后,Redirect没有终止请求,继续访问了待校验登录权限的View();

filterContext.Controller.ControllerContext.RequestContext.HttpContext.Response.Redirect("/Manage/User");

目前解决方案

     public override void OnActionExecuting(ActionExecutingContext filterContext)
{ if (filterContext.Controller.ControllerContext.RequestContext.HttpContext.Session["UserLoginState"] == null)
{
string firstRquUrl = string.Empty; //记录未登录时访问的Url
if (filterContext.Controller.ControllerContext.RequestContext.HttpContext.Request.Url != null)
{
firstRquUrl = filterContext.Controller.ControllerContext.RequestContext.HttpContext.Request.Url.ToString();
}
filterContext.Controller.ControllerContext.RequestContext.HttpContext.Session["RawUrl"] = firstRquUrl;
filterContext.Result = new RedirectResult("/Manage/User");//核心语句 #region 方法1
//filterContext.Controller.ControllerContext.RequestContext.HttpContext.Response.Redirect("/Manage/User");
//filterContext.Result = new HttpNotFoundResult();
#endregion }// the end Session["UserLoginState"]==null
base.OnActionExecuting(filterContext);
}

核心语句:
/*通过重定向到指定的 URI 来控制对应用程序操作的处理。*/ 

filterContext.Result = new RedirectResult("/Manage/User");

原理分析:

      // 摘要:
// 通过重定向到指定的 URI 来控制对应用程序操作的处理。
public class RedirectResult : ActionResult
{
// 摘要:
// 初始化 System.Web.Mvc.RedirectResult 类的新实例。
//
// 参数:
// url:
// 目标 URL。
//
// 异常:
// System.ArgumentNullException:
// url 参数为 null。
public RedirectResult(string url);
}

总结

虽然目前解决了问题,但有两个问题还是没有理解透

1.//这里讲请求上下文的结果返回而是请求中断么?

filterContext.Result =

2.Response.Redirect 和 new RedirectResult("")的实现原理和页面生命周期是否一样呢

MVC的自定义动作过滤器(一)的更多相关文章

  1. 笨鸟先飞之ASP.NET MVC系列之过滤器(03动作过滤器过滤器)

    概念介绍 动作过滤器应该是我们平常工作中需要用到最多的过滤器了,动作过滤器,主要在我们的动作方法执行前后执行. 如果我们需要创建动作过滤器需要实现IActionFilter接口. 我们看到该接口里有两 ...

  2. Asp.Net MVC学习总结之过滤器详解(转载)

    来源:http://www.php.cn/csharp-article-359736.html   一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...

  3. asp.net MVC之 自定义过滤器(Filter) - shuaixf

    一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration :缓存的时间, 以 ...

  4. asp.net MVC之 自定义过滤器(Filter)

    一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration:缓存的时间,以秒为 ...

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

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

  6. ASP.NET MVC动作过滤器

    ASP.NET MVC提供了4种不同的动作过滤器(Aciton Filter). 1.Authorization Filter 在执行任何Filter或Action之前被执行,用于身份验证 2.Act ...

  7. MVC之 自定义过滤器(Filter)

    MVC之 自定义过滤器(Filter) 一.自定义Filter 自定义Filter需要继承ActionFilterAttribute抽象类,重写其中需要的方法,来看下ActionFilterAttri ...

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

    实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器 MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过A ...

  9. MVC过滤器:自定义操作过滤器

    一.操作过滤器 1.定义 操作过滤器用于实现IActionFilter接口以及包装操作方法执行.IActionFilter接口声明两个方法:OnActionExecuting和OnActionExec ...

随机推荐

  1. lua弱表引用

    1.普通垃圾回收 --lua弱表,主要是删除key或者value是table的一种元方法 --元表里的__mode字段包含k或者v:k表示key为弱引用:v表示value为弱引用 local test ...

  2. 关于int类型的赋值语句正确的有

    A.char a=65;          对 B.int a=12.0; C.int a=12.0f; D.int a=(int)12.0     对

  3. ListView 中的ImageView Button

    1.ListView 中的ImageView  Button的点击事件会屏蔽掉ItemView的点击事件 原因是ImageView Button在回执过程中会抢夺item的焦点 解决办法:在xml中添 ...

  4. Linux内核分析总结

    张潇月 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习目录: (1)计算机是如何工作的   h ...

  5. 【转载】new和malloc的区别

    本篇随笔为转载,原贴地址:C++中new和malloc的十点区别. 前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答n ...

  6. 关于 Dev中的GridControl 中 GridView 的 PopulateColumns() 方法

    最近使用Dev控件,Gridview绑定数据源后不能显示数据,于是在网上查询,说是使用PopulateColumns()方法,可以显示数据.试了一下,管用. 于是在所有更新数据源数据后,都用上了这句话 ...

  7. Jquery--JS的函数包

    Jquery-----JS的函数包,直接来调用方法. 一.基本知识 用法:把jquery-1.7.2.js直接复制到要做的网站项目中,拖拽引用和JS用法一样. 二.选择器 [1]基本: 1.取ID:v ...

  8. npm库下载缓慢解决方案

    淘宝针对国内下载npm库缓慢的问题,使用建立自己的cnpm库,可以很方便使用在公司内部使用. 地址:http://npm.taobao.org/ $ npm install -g cnpm --reg ...

  9. sql 2012 操作EXCEL 2013

    确认是否有Microsoft.ACE.OLEDB.12.0数据接口 --进行配置: EXEC sp_configure 'show advanced options', 1 GO RECONFIGUR ...

  10. Python之路-Day2

    二进制 1bit = 一个二进制位 8bit = 1byte 循环 for while 数据类型 数字.字符串.列表.元祖.字典.集合 字符编码 文件处理 for循环: for i in range( ...