1.实例一

    /// <summary>
/// 需要用户登陆的 action,执行提前验证
/// </summary>
public class LoginFilterAttribute : FilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
}
/// <summary>
/// 执行action 前验证 用户是否登陆,如果没有登陆返回字符串体质
/// </summary>
/// <param name="filterContext"></param>
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
// throw new NotImplementedException();
//1.判断
if (A_UserHelper.IsLogin() == false)
{
ContentResult result = new ContentResult();
result.Content = "亲,还没有登陆,请先登录";
filterContext.Result = result;
}
} }

2.实例二

    public class LoginGoAttribute : FilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
//throw new NotImplementedException();
}
/// <summary>
/// 执行action 之前 验证用户是否登陆,如果没有登陆返回登陆页面
/// </summary>
/// <param name="filterContext"></param>
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
//throw new NotImplementedException();
if (A_UserHelper.IsLogin() == false)
{
//不跳转在当前地址返回登陆页------
//RouteData route = filterContext.RouteData;
//route.Values["controller"] = "user";
//route.Values["action"] = "login";
//IController IController = new UserController();
//HttpContextBase context = filterContext.HttpContext;
//IController.Execute(new RequestContext(context, route));
//filterContext.Result = new ContentResult(); //重定向到登陆页--------不推荐使用,因为当前action还是会执行
//HttpContextBase context = filterContext.HttpContext;
//context.Response.Redirect(SiteUrl.GetLogin(),true);
//context.Response.End();
//filterContext.ActionDescriptor = null; //临时重定向到登陆页
HttpRequestBase req = filterContext.HttpContext.Request;
string url = SiteUrl.GetLogin() + "?redirecturl=" + req.Url.AbsoluteUri;
RedirectResult result = new RedirectResult(url, false);
filterContext.Result = result; //此方法 失败
//HttpContextBase context = filterContext.HttpContext;
//UserController userC = new UserController();
//userC.ControllerContext = new ControllerContext();
//userC.ControllerContext.RouteData.DataTokens["controller"] = "user";
//userC.ControllerContext.RouteData.Values["area"] = "";
//ContentResult content = new ContentResult();
//content.Content = ViewHelper.RenderViewToString(userC, "login", null); ;
//filterContext.Result = content; }
}
}

更多:

MVC4过滤器:http://www.cnblogs.com/tianma3798/p/4666544.html

Action过滤器使用实例(一)的更多相关文章

  1. Asp.Net Mvc Action过滤器(二)

    在Mvc中为Action添加过滤器,有两种方式, 一.使用ActionFilterAttribute,简单方式,同时支持Result的过滤处理, 1.可以为空,支持的重写:OnActionExecut ...

  2. asp.net MVC之Action过滤器浅析

    在asp.net MVC中,Action过滤器是一大利器,它可以在以下两个步骤执行相关的代码: 1.执行Action方法之前:OnActionExecuting 2.Action方法执行完毕后:OnA ...

  3. 关于struts和Spring 结合到一起之后存在ACtion创建单实例还是多

    struts 2的Action是多实例的并非单例,也就是每次请求产生一个Action的对象.原因是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面 ...

  4. ASP.NET MVC : Action过滤器(Filtering)

    http://www.cnblogs.com/QLeelulu/archive/2008/03/21/1117092.html ASP.NET MVC : Action过滤器(Filtering) 相 ...

  5. mvc 5 的过滤器和webapi 过滤器 对应实现的action过滤器区别

     asp.net webapi  Action过滤器实现这个: #region 程序集 System.Web.Http, Version=5.2.3.0, Culture=neutral, Publi ...

  6. MVC action过滤器验证登录

    方法一 :  1.创建一个全局action过滤器  (在appstart  的filterconfig中注册   filters.Add(new LoginAttribute());)  2.不需要登 ...

  7. MVC中的Action过滤器

    Action过滤器可以用在调用动作方法之前或之后,执行一些特殊的逻辑,比如用登录验证: Action过滤器实现IActionFilter接口,该接口有两个方法: public interface IA ...

  8. Django 过滤器 实例

    实例1 safe让Html标签以及一些特殊符号(如<)生效,下面以例子说明: # value = '<b>CPT</b>' # 那么输出的时候,CPT就是加粗的,如果不加 ...

  9. 使用VS2012 开发SharePoint 2013 声明式的action(activity) 综合实例

    本文讲述使用VS2012 开发SharePoint 2013 声明式的action 综合实例. 需求同: http://blog.csdn.net/abrahamcheng/article/detai ...

随机推荐

  1. swift中Double转String

    swift上手有好几天了.发现swift除了本身的几个基本类型转换,一些比较特殊的数值类型转换需要“桥接”到Objective-C来进行- 代码当然也很简单- var numString = &quo ...

  2. USACO 6.5 All Latin Squares

    All Latin Squares A square arrangement of numbers 1 2 3 4 5 2 1 4 5 3 3 4 5 1 2 4 5 2 3 1 5 3 1 2 4 ...

  3. 2017冬季24集训模拟-2.A问题

    ————————————————————————————————————————题解 唯一没有想出来的题 我们发现以上两种操作 a0,a3,a6,a9……的相对位置不变 a1,a4,a7,a10……的 ...

  4. Python全栈开发之目录

    基础篇 Python全栈开发之1.输入输出与流程控制 Python全栈开发之2.运算符与基本数据结构 Python全栈开发之3.数据类型set补充.深浅拷贝与函数 Python全栈开发之4.内置函数. ...

  5. Ionic入门十:icon(图标)

    ionic 也默认提供了许多的图标,大概有500多个.用法也非常的简单: <i class="icon ion-star"></i> 图标列表如下:   ...

  6. Mybatis框架简单使用

    Mybatis框架简单使用 环境搭建 新建一个JavaWeb项目,在web\WEB-INF\创建lib文件,并且在其下添加Mybatis的核心包以及依赖包,以及Mysql驱动包,junit4测试包等. ...

  7. socket--多进程,多线程服务器

    一:概念: 我们知道IP地址是标志网络中不用主机的IP地址,而端口号就是同一台主机上标志不同进程的地址,IP地址和端口号标志网络中的唯一地址.(又称socket) 在TCP协议中,建⽴立连接的两个进程 ...

  8. 【2017多校训练08 1002】【HDOJ 6134】Battlestation Operational

    典型的数列反演题. 运用莫比乌斯反演的一个结论 $[n = 1] = \sum_{d | n} \mu(d)$,将表达式做如下转化: $$ ans = \sum_{i=1}^n \sum_{j=1}^ ...

  9. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) A. Bear and Game 水题

    A. Bear and Game 题目连接: http://www.codeforces.com/contest/673/problem/A Description Bear Limak likes ...

  10. 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...