一个保存数据的方法(可以切换存放的位置,可以设置密钥)

 

      在asp.net里面一般的生命周期都比较短,如果想要比较长久的保存数据的话,一般有选择几种方式可供选择,即cookiesViewStateSessionCacheapplication等。他们各有优缺点,也各有其自己的使用范围。

 

      我现在遇到了两个问题,第一个是如何在这几种方式里面快速、方便的切换,第二个是如何实现一个既可以区分用户,又可以区分页面,又节省服务器的资源,又比较安全的保存数据的方式。

 

      ViewState比较符合第二个问题的要求,但是他不太安全,表面上看他存放在客户端的是乱码,其实是可以解密的,解密之后就是明文了,你存放的是什么就一目了然。如果是使用ViewState保存一般的数据倒也是没有什么问题,但是我想保存的是表名、字段名、SQL语句这样的很敏感的数据,这样的数据放在ViewState里面,估计会被人骂死,呵呵。

 

      以前的QuickPager分页控件确实是这么处理的,现在越想越不安全,自己用用也就凑合了,如果推广的话,那就害人了。所以我不得不想办法来解决这个很严重的问题。于是我想写一个独立的能够保存数据的类。这个类可以使用各种方式来存放数据,如果要加密数据的话,也可以自己设置密钥,这样不知道密钥的话,就不能解密了(除非暴力破解),当然您也可以选择不加密(保存在SessionCache就不用加密了),也可以选择不保存。

 

      这样这个类就很灵活了,使用范围也可以广泛一点。

 

      在实现这个函数的时候,遇到了两大难题,一个是如何操作隐藏域,另一个是如何“自动”保存和“自动”加载。ViewState可是不用单独调用SaveViewState()来保存数据的。

 

      在Class里面操作cookieSession等还是比较容易的(System.Web.HttpContext.Current.Response.Cookies[ClientID]),可是如何控制隐藏域呢?想了好久也没有想到好的方法,只好用笨方法了——传递一个Page实例(System.Web.UI.Page)进来,然后使用Page.ClientScript.RegisterHiddenField(ClientID, myData) 来搞定。

 

      至于自动保存,也是采用了一个笨笨的方法,既然已经把Page传递进来了,那么就给他加一个事件吧,_page.PreRender += new EventHandler(MyPage_PreRender);在执行Render之前保存数据。我想用类似的思路来搞定自动加载数据的(_page.PreLoad += new EventHandler(MyPage_PreLoad);),但是遇到了一个小问题。我们一般都是习惯在Page_Load函数里面给属性赋值,但是我要加的事件却是在Page_Load之前执行,也就是说如果在Page_Load里面赋值的话,即使把事件加上了,那么也早已经失去了执行的机会。当然可以在OnInit里面给属性赋值,只是这么做不太符合习惯。

 

      我也研究了一下IStateManager 这个接口,也试了一下,可惜没有成功,也许是我功力不够的原因吧。

 

      Ps:这个难题解决之后,QuickPager分页控件就可以一份为二了,变成QuickPager_UIQuickPager_SQL两个部分,再加上我的数据访问函数库和现实数据的控件,就是一套完整的分页解决方案了。

 

      QuickPager_SQL就是专门处理分页算法(也就是分页用的SQL语句)的,这些部分都可以独立使用,也可以替换成其他的控件、类库。

 

      下面是源码,源文件等整理之后和分页控件一起发送。

 

 

 

一个保存数据的方法(可以切换存放的位置,可以设置密钥)namespace JYK.Common
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)    
枚举enum SaveViewStateLocation#region 枚举enum SaveViewStateLocation
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)    
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)    
/// 保存数据的位置
一个保存数据的方法(可以切换存放的位置,可以设置密钥)    
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)    public enum SaveViewStateLocation
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)    
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 不保存
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        NoSave = 1,
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 放在Cookie里面保存
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        Cookie = 2,
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 放在隐藏域里面保存
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        Hidden = 3,
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 放在Session里面保存
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        Session = 4,
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 放在Cache里面保存
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        Cache = 5,
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 放在Application里面保存
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        Application = 6
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)    }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)    
#endregion

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)    
public class MyViewState        //: IStateManager
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)
    一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
成员#region 成员
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 保存数据的字典
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        private Dictionary<stringstring> vs = new Dictionary<stringstring>();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 用于给表单里面添加隐藏域和加事件
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        private System.Web.UI.Page _page;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 密钥
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        private string _key = "";
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
#endregion

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
public MyViewState()
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
//默认设置为不保存
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
            SaveLocation = SaveViewStateLocation.NoSave;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)      
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
属性#region 属性
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 存放数据的位置
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        public SaveViewStateLocation SaveLocation;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 密钥,不同的密钥会生成不同的密文。空字符串表示不需要加密
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        public string Key
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
set
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                _key 
= value;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
get
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
return _key;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 保存数据的标识
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        public string ClientID = "myVS";
一个保存数据的方法(可以切换存放的位置,可以设置密钥)       
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 传递Page实例,以实现自动保存数据,和添加隐藏域的功能
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        public Page Page
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
set
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                _page 
= value;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                _page.PreLoad 
+= new EventHandler(MyPage_PreLoad);          //本来想在Page_Load之前加载内容,但是出现了一点问题
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
                _page.PreRender += new EventHandler(MyPage_PreRender);      //自动保存内容
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
get 一个保存数据的方法(可以切换存放的位置,可以设置密钥)return _page; }
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
索引器,类似于ViewState的使用方式#region 索引器,类似于ViewState的使用方式
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 索引器,类似于ViewState的使用方式
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// <param name="key"></param>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// <returns></returns>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        public string this[string key]
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
set 
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
if (vs.ContainsKey(key))
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    vs[key] 
= value; 
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
else 
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    vs.Add(key, value);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
get 
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
if (vs.ContainsKey(key))
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
return vs[key];
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
else
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
return null;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
#endregion

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
#endregion

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
用于自动加载和保存数据的事件#region 用于自动加载和保存数据的事件
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
void MyPage_PreRender(object sender, EventArgs e)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            SaveViewState();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
//throw new NotImplementedException();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
        }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
void MyPage_PreLoad(object sender, EventArgs e)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            LoadViewState();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
//throw new NotImplementedException();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
        }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
#endregion

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
函数#region 函数
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/**//// <summary>
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// 把数据保存到指定的位置里面
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
/// </summary>

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        public void SaveViewState()
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
//拼接字符串
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
            System.Text.StringBuilder str = new StringBuilder(1000);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
foreach (KeyValuePair<string,string> entry in vs)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                str.Append(entry.Key);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                str.Append(
"`");
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                str.Append(entry.Value);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                str.Append(
"`");
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
if (str.Length == 0)        //没有赋值
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
                return ;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            str.Remove(str.Length 
- 11);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
string myData =  str.ToString();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
if (Key.Length > 0)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
//加密
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
                myData = Encryptor.Encrypt(myData, Key);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            str.Length 
= 0;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
保存#region 保存
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
switch (SaveLocation)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Cookie :
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    System.Web.HttpContext.Current.Response.Cookies[ClientID].Value 
= myData;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Hidden:
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
一个保存数据的方法(可以切换存放的位置,可以设置密钥)#region
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
if (Page != null)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                        Page.ClientScript.RegisterHiddenField(ClientID, myData);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
#endregion

一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Session :
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    System.Web.HttpContext.Current.Session[ClientID] 
= myData;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Cache :
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    System.Web.HttpContext.Current.Cache[ClientID] 
= myData;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Application :
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    System.Web.HttpContext.Current.Application[ClientID] 
= myData;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
#endregion

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)          
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
public void LoadViewState()
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
//加载
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
            string str = "";
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
string[] arr = null;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
switch (SaveLocation)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Cookie:
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
if (System.Web.HttpContext.Current.Request.Cookies[ClientID] == null)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                        
return;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    str 
= System.Web.HttpContext.Current.Request.Cookies[ClientID].Value;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Hidden :
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
if (Page == nullreturn;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
if (System.Web.HttpContext.Current.Request[ClientID] == nullreturn;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    str 
= System.Web.HttpContext.Current.Request[ClientID];
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Session:
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    str 
= System.Web.HttpContext.Current.Session[ClientID].ToString();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Cache:
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    str 
= System.Web.HttpContext.Current.Cache[ClientID].ToString();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
case SaveViewStateLocation.Application:
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    str 
= System.Web.HttpContext.Current.Application[ClientID].ToString();
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                    
break;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
if (str.Length == 0)        //没有取到值
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
                return;
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
if (Key.Length > 0)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                
//加密
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
                str = Encryptor.Decrypt(str, Key);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
//拆分
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
            arr = str.Split('`');
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                  
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
//赋值
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
            for (int i = 0; i < arr.Length; i += 2)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)一个保存数据的方法(可以切换存放的位置,可以设置密钥)            
一个保存数据的方法(可以切换存放的位置,可以设置密钥){
一个保存数据的方法(可以切换存放的位置,可以设置密钥)                vs.Add(arr[i], arr[i 
+ 1]);
一个保存数据的方法(可以切换存放的位置,可以设置密钥)            }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)        
#endregion

一个保存数据的方法(可以切换存放的位置,可以设置密钥)
一个保存数据的方法(可以切换存放的位置,可以设置密钥)      
一个保存数据的方法(可以切换存放的位置,可以设置密钥)    }

一个保存数据的方法(可以切换存放的位置,可以设置密钥)}

 

上一篇:算了一笔帐,供房子需要挣多少钱——在贷款的情况下,每个月最低工资。


下一篇:python 装饰器简介