.NET MVC Filter
来源:互联网 发布:spss mac 人大 编辑:程序博客网 时间:2024/06/07 15:39
1. 常用的过滤器接口
IAuthorizationFilter:在所有的Filter中最早执行的,可用于Action的权限控制
IActionFilter:在Action执行的前后,可用于请求跳转、记录Action执行日志
IResultFilter:在Result执行的前后,可用于记录Result执行日志
IExceptionFilter:在任何异常发生时,可用于记录日志、处理异常、指定错误页面
2.
eg: 作用在 Result上的过滤器
1. 新建一个类继承 FilterAttribute 实现 IActionFilter接口 重写接口中的方法
public class UserFilter: FilterAttribute,IActionFilter
{
public void OnActionExecuted(ActionExecutedContext filterContext)
{
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpSessionStateBase session= filterContext.HttpContext.Session; //取到Session
//get the controller and result name and field value
string controllName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName; //取到当前访问的Controller和Result的名称
string actionName = filterContext.ActionDescriptor.ActionName;
session["controllName"] = controllName;
session["actionName"] = actionName;
string fileName = filterContext.RouteData.Values["fileName"]==null?"":filterContext.RouteData.Values["fileName"].ToString();
//可以取到URL中的传递参数的值
HttpRequestBase request = filterContext.HttpContext.Request;
string fileNameString = request.QueryString["fileName"];
//判断是否登录,以及判断后的跳转
string user = (string)session["user"];
if(null == user){
filterContext.Result = new RedirectResult("/File/ListFiles"); //没有登录的话跳转到指定页面
}
else if (!"admin".Equals(user))
{
filterContext.Result = new RedirectResult("/File/FieldTest2");
}
}
}
2. 在ActionResult方法上只需指定自定义的Filter的类名即可
[UserFilter]
public ActionResult FieldSubmit3(FieldModel fileModel)
{
ViewData["fileModel"] = fileModel;
return View("FieldTest3");
}
3. 如果在global.asax中, route的配置如下:
routes.MapRoute("Flow", "Flow/FlowDetail/{flowId}", new { Controller = "Flow", action = "FlowDetail", fileName = UrlParameter.Optional });
则在 ActionFilter中想取到route中flowId的值如下:
object flowId = filterContext.RouteData.Values["flowId"];
- .NET MVC Filter
- asp.net mvc filter
- ASP.NET MVC 过滤器Filter
- ASP.NET MVC 过滤器Filter
- ASP.NET MVC AOP-Filter
- ASP.NET MVC的Action Filter
- ASP.NET MVC 四 过滤器Filter
- ASP.NET MVC的Action Filter
- asp.net mvc 下使用 HttpResponse.Filter
- asp.net mvc Filter拦截跳转
- Asp.Net MVC 2.0 Filter基本用法
- ASP.NET MVC学习笔记-----Filter
- ASP.NET MVC中Filter使用
- ASP.NET MVC中Filter使用
- 关于ASP.NET MVC的Filter小记
- ASP.NET MVC的Action Filter
- Asp.net mvc自定义Filter简单使用
- ASP.Net MVC Filter验证用户登录
- gflags摘记
- FPGA学习的一些误区
- MFC开机自启动(写注册表)
- 只有一个人上班唉
- 防止程序二次启动
- .NET MVC Filter
- 站在巨人的肩膀上学习Android开发
- POJ 3253 Fence Repair
- [笔记] 《设计模式解析》
- 递归列出指定目录下所有的符号链接文件
- 监控正常网络连接断开
- Python正则表达式指南
- 欢迎来到Swift
- Qt怎样禁止用户最大化窗口解决办法