C#筛选器类ActionFilterAttribute的使⽤
C#筛选器类ActionFilterAttribute的使⽤
ActionFilterAttribute类是C# MVC中的过滤类,跟JAVA的Filter效果类似,但是Filter是接⼝。
ActionFilterAttribute类是被abstract 修饰符修饰,表⽰该类只能是基类,也就是只能被继承。
ActionFilterAttribute类中只有⼀个⽆参数的构造函数和四个被protected 修饰符修饰,表⽰该⽅法只限于本类和⼦类访问,实例不能访问。
⽅法名和使⽤规则如下:
四个⽅法只是执⾏点不同⽽已,其他都是⼀样的⽤法,⼀般我们要的效果是在⽅法调⽤前将页⾯传过来对的参数过滤,所以⼀般⼦类重写OnActionExecuting⽅法。
下⾯为ActionFilterAttribute类的具体⽤法:
要实现过滤的效果:
第⼀步:我们要写⼀个类,继承ActionFilterAttribute类
由于ActionFilterAttribute类是Web.MVC中的类,所以必须先引⽤System.Web.Mvc
using System.Web.Mvc;
public class Class1: ActionFilterAttribute{}
第⼆步:重写OnActionExecuting⽅法
因为要重写OnActionExecuting⽅法,所以要⽤override(重写)修饰符修饰。
public override void OnActionExecuting(ActionExecutingContext filterContext){}
第⼆步:调⽤类。
新店开业海报
在项⽬中需要过滤的⽅法前⾯加上[类名(属性字段1=值,属性字段2=值,…)]即可调⽤。
520和521注:ActionFilterAttribute类可以做⽇志类,记录⽅法状态并保持到⽂件中。
ActionFilterAttribute类可以做筛选器,过滤各种不正确的参数或调⽤者。
下⾯是我写的⼀个Demo,实现修改调⽤者传过来的参数值
⾸先,创建⼀个class1的类,重写OnActionExecuting⽅法,如下:
葫芦娃歌词public class Class1: ActionFilterAttribute
红酒做菜有哪些菜
{
public override void OnActionExecuting( ActionExecutingContext filterContext) {
星蛋// ActionParameters⽅法是获取操作⽅法的参数列表,返回IDictionary类型
caj文件IDictionary<string,object> dd= filterContext.ActionParameters;
dd["str1"] = "5555";
}
}
香菇青菜粥然后写个⽅法调⽤class1
[Class1]//调⽤class1类
空中运输
public string Demo(string str1)
{
return str1
}
然后再浏览器执⾏该⽅法,效果如下: