MVC的自定义动作过滤器(一)
感谢好朋友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的自定义动作过滤器(一)的更多相关文章
- 笨鸟先飞之ASP.NET MVC系列之过滤器(03动作过滤器过滤器)
概念介绍 动作过滤器应该是我们平常工作中需要用到最多的过滤器了,动作过滤器,主要在我们的动作方法执行前后执行. 如果我们需要创建动作过滤器需要实现IActionFilter接口. 我们看到该接口里有两 ...
- Asp.Net MVC学习总结之过滤器详解(转载)
来源:http://www.php.cn/csharp-article-359736.html 一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...
- asp.net MVC之 自定义过滤器(Filter) - shuaixf
一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration :缓存的时间, 以 ...
- asp.net MVC之 自定义过滤器(Filter)
一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration:缓存的时间,以秒为 ...
- 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...
- ASP.NET MVC动作过滤器
ASP.NET MVC提供了4种不同的动作过滤器(Aciton Filter). 1.Authorization Filter 在执行任何Filter或Action之前被执行,用于身份验证 2.Act ...
- MVC之 自定义过滤器(Filter)
MVC之 自定义过滤器(Filter) 一.自定义Filter 自定义Filter需要继承ActionFilterAttribute抽象类,重写其中需要的方法,来看下ActionFilterAttri ...
- MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器 MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过A ...
- MVC过滤器:自定义操作过滤器
一.操作过滤器 1.定义 操作过滤器用于实现IActionFilter接口以及包装操作方法执行.IActionFilter接口声明两个方法:OnActionExecuting和OnActionExec ...
随机推荐
- 采用UDP协议实现PIC18F97J60 ethernet bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). TCP/IP Stac ...
- NHibernate系列文章二十三:NHibernate查询之Criteria查询(附程序下载)
摘要 上一篇文章介绍了NHibernate HQL,他的缺点是不能够在编译时发现问题.如果数据库表结构有改动引起了实体关系映射的类有改动,要同时修改这些HQL字符串.这篇文章介绍NHibernate面 ...
- python中的浅拷贝和深拷贝
1.赋值语句 a = 'abc' b = a print id(a) print id(b) # id(a):29283464 # id(b):29283464 通过简单的复制,我们可以看到,a b其 ...
- 关于html自闭合标签要不要加空格和斜杠的问题?
问题描述:可能很多人都遇到过这个问题,写网页时,link img br input等等这些标签时到底要不要在结尾加上空格和斜杠呢? 我曾经貌似在<编写高质量代码>上看到过这样的介绍,遇到l ...
- NodeJS学习三之API
Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务.这导致Node大量采用异步操作(asynchronous opertion),即任务不是马上执行,而是插 ...
- R语言获取国内的股票数据
quantmod 包默认是访问 yahoo finance 的数据,其中包括上证和深证的股票数据,还有港股数据. 上证代码是 ss,深证代码是 sz,港股代码是 hk 例如苏宁云商 setSymbol ...
- maven使用阿里云仓库
1.修改maven的conf/settings.xml文件,在<mirrors></mirrors>标签里加入: <mirror> <id>nexus- ...
- Quartz.NET作业调度框架详解(转)
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- Android 之Html的解析(使用jsoup)
Runnable run=new Runnable() { @Override public void run() { // TODO Auto-generated method stub useri ...
- 前端mac下的工具
1.制作base64图片的 DataURLMaker imageAlpha 减少png图片尺寸 2.共享iphone X-Mirage 3.制作交互图 briefs 4.制作矢量图 sketch