原始路径地址:http://q.cnblogs.com/q/28529/
为什么的我点击时间没有效果是不是哪儿不对?
public partial class Index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[ValidatePermission(1, 10)]
protected void Button1_Click(object sender, EventArgs e)
{
HttpContext.Current.Response.Redirect("index.aspx?id=2&p=Button1_Click");
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
public class ValidatePermissionAttribute : Attribute
{
private readonly int _permissionNum;
private int _currentUserPermissionNum;
public ValidatePermissionAttribute(int permissionNum, int currentPermissionNum)
{
this._permissionNum = permissionNum;
this._currentUserPermissionNum = currentPermissionNum;
ValidateAccountPermission();
}
public int PermissionNum
{
get
{
return this._permissionNum;
}
}
public int CurrentPermissionNum
{
get
{
return this._currentUserPermissionNum;
}
}
public void ValidateAccountPermission()
{
if (PermissionNum != CurrentPermissionNum)
{
HttpContext.Current.Response.Redirect("Error.aspx");
}
}
}
attribute,是不具体事情,具体的事情是通过反射,获得特性标签中内容,在具体做处理,最常用的就是序列化,用Serializable特性
//假如说序列化下面这个类 [Serializable] class MyClass { } using (MemoryStream stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream,p); //Serizlize方法内部,通过反射的方式获取Serializable特性,在做具体的事情处理 }
我在以前见过一个代码 他的功能是
ajax 的 异步访问的函数上添加特性
判断这个IP的请求频率,条件错误,那么不允许访问
个代码很简单 记不得了 好像不是aop
@我现还在还是菜鸟: 我上次回的是关于attribute的,我感觉你现在用这种方式去实现,不是更好,也不是很方便,
@秋壶冰月: 谢谢 我其实 找的是这个东西今天找到了
http://www.cnblogs.com/shanyou/archive/2010/03/29/1699511.html
但是我想把他用到应用程序中 不知道怎么去事项 可能真的要用到AOP
Attribute可以认为是对类、方法、属性的一个标识,比如楼上所说的类标识为Serializable(可以序列化的),它只是一个标记而已,没有方法动作可言。
如果你想完成你你所说的功能,你可以把它标识为要验证权限的,在真正执行Button1_Click前,你可以通过反射获取此方法的Attribute标记,然后进行相应的处理。不过觉得你的这个要实现的功能没必要这样做
除了做标记,使用Attribute一般都要配合反射一起使用
HttpContext.Current.Response.Redirect("Error.aspx",true);
用这个试试看。