首页 / 网页编程 / ASP.NET / 超级简单 - 巧用ViewState属性
超级简单 - 巧用ViewState属性2011-05-27 博客园 朱祁林当我在页面中使用ViewState ,通常是用一个属性表示,例如:private int ViewState_UserID
{
get { return (int) ViewState["UserId"]; }
set { ViewState["UserId"] = value; }
}写这样一组代码感觉比较麻烦,如果能像下面这样简单地使用就好了。[ViewStateProperty("UserID")]
protected int ViewState_UserID { get; set;}或者[ViewStateProperty]
protected int ViewState_UserID { get; set;}这里介绍一种超级简单的方式去实现:使用Attribute。第一步:创建BasePage 类,它继承System.Web.UI.Page。这里使用了 Reflection和LINQ。using System.Reflection;
using System.Linq;
public class BasePage : System.Web.UI.Page第二步:在BasePage中使用一个内部类ViewStateProperty ,这个类继承 Attribute 。用Attribute的目的是描述页面中哪个属性是viewstate属性。用这 个属性来标识viewstate属性,因此它应该BasePage内部。代码[AttributeUsage(AttributeTargets.Property)]
public class ViewStateProperty : Attribute
{
public string ViewStateName { get; private set; }
internal ViewStateProperty(){
this.ViewStateName = string.Empty;
}
public ViewStateProperty(string in_ViewStateName){
this.ViewStateName = in_ViewStateName;
}
}[AttributeUsage(AttributeTargets.Property)]意味着这个attribute 只对 property类型可用。在public ViewStateProperty(string in_ViewStateName) 中初始化ViewState 的名称。默认情况下,ViewState 的名字为空。如果你想在 设置attribute的时候初始化ViewState的名字时,要将默认构造函数设置为私有 的。