Action过滤器使用实例(一)
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过滤器使用实例(一)的更多相关文章
- Asp.Net Mvc Action过滤器(二)
在Mvc中为Action添加过滤器,有两种方式, 一.使用ActionFilterAttribute,简单方式,同时支持Result的过滤处理, 1.可以为空,支持的重写:OnActionExecut ...
- asp.net MVC之Action过滤器浅析
在asp.net MVC中,Action过滤器是一大利器,它可以在以下两个步骤执行相关的代码: 1.执行Action方法之前:OnActionExecuting 2.Action方法执行完毕后:OnA ...
- 关于struts和Spring 结合到一起之后存在ACtion创建单实例还是多
struts 2的Action是多实例的并非单例,也就是每次请求产生一个Action的对象.原因是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面 ...
- ASP.NET MVC : Action过滤器(Filtering)
http://www.cnblogs.com/QLeelulu/archive/2008/03/21/1117092.html ASP.NET MVC : Action过滤器(Filtering) 相 ...
- mvc 5 的过滤器和webapi 过滤器 对应实现的action过滤器区别
asp.net webapi Action过滤器实现这个: #region 程序集 System.Web.Http, Version=5.2.3.0, Culture=neutral, Publi ...
- MVC action过滤器验证登录
方法一 : 1.创建一个全局action过滤器 (在appstart 的filterconfig中注册 filters.Add(new LoginAttribute());) 2.不需要登 ...
- MVC中的Action过滤器
Action过滤器可以用在调用动作方法之前或之后,执行一些特殊的逻辑,比如用登录验证: Action过滤器实现IActionFilter接口,该接口有两个方法: public interface IA ...
- Django 过滤器 实例
实例1 safe让Html标签以及一些特殊符号(如<)生效,下面以例子说明: # value = '<b>CPT</b>' # 那么输出的时候,CPT就是加粗的,如果不加 ...
- 使用VS2012 开发SharePoint 2013 声明式的action(activity) 综合实例
本文讲述使用VS2012 开发SharePoint 2013 声明式的action 综合实例. 需求同: http://blog.csdn.net/abrahamcheng/article/detai ...
随机推荐
- pyqt5猜数小程序
程序界面用qt设计师制作,并用pyuic5命令转换成form.py文件 #-*- coding:utf-8 -*- from PyQt5.QtWidgets import QApplication,Q ...
- 41:和为S的两个数
import java.util.ArrayList; import java.util.Collections; /** * 面试题41:和为S的两个数 * 输入一个递增排序的数组和一个数字S,在数 ...
- Git 码云操作
https://www.cnblogs.com/lanxiang/p/7487971.html 将项目提交到码云 在码云创建项目 然后在项目目录下: 打开后输入: git init 目录下出现.git ...
- 容易错的try
配对方式一:try{}catch{}配对方法二:try{}catch{}finally{}配对方法三:try{}finally{}所以可用看出 catch和finally都不是必须的,try和catc ...
- .Net中的IO
C#中的IO 本文环境为: Win 10 VS 2015 .net Framework 版本 4.0 File 类 File 类是一个工具类,可以用来判断文件是否存在和方便的创建文件, 读取.写入等操 ...
- 我们不能把JavaScript作为一个全功能的编程语言。它缺乏以下重要特征
客户端JavaScript不允许读或写文件.这已被保存的安全原因. JavaScript不能用于网络的应用,因为没有这样的支持. JavaScript没有任何多线程或多处理器的能力.
- django信号调度的用法
Django中提供了"信号调度",用于在框架执行操作时解耦. 一些动作发生的时候,系统会根据信号定义的函数执行相应的操作 Django中内置的signal Model_signal ...
- JS 常用库汇总收集
本文不定期更新, 用于汇总记录一些看着 ok 的 JS 库. 库名 简介 项目地址 macy.js 仅 4 kb的 原生 流布局插件 http://macyjs.com/ Driver.js 仅 4 ...
- 递归与分治策略之循环赛日程表Java实现
递归与分治策略之循环赛日程表 一.问题描述 设有n=2^k个运动员要进行网球循环赛.现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次: (2)每个选手一天只能参赛一 ...
- BZOJ.2194.快速傅立叶之二(FFT 卷积)
题目链接 \(Descripiton\) 给定\(A[\ ],B[\ ]\),求\[C[k]=\sum_{i=k}^{n-1}A[i]*B[i-k]\ (0\leq k<n)\] \(Solut ...