状态存储管理 encode,decode,transfer

ASP.NET状态存储管理九大兵器之二(查询字苻串)    
  查询字苻串是追加在URL后的数据(也是我常用的)  
  例如:  
  http://www.cnblogs.com/aierong/admin/EditPosts.aspx?opt=abc  
  这里?后的opt=1就是查询字符串  
  当我们在一页面向另一页面传递数据时可以用此方法。  
  使用如下方法接到数据:  
  string   str=Request.QueryString[“opt“]  
  这样str就等于“abc“  
  这里我们传递的是英文字符,要是传递中文字符,我们得进行编码和解吗:  
  傳送時用Server.UrlEncode方法編碼,接收時用Server.UrlDecode解碼.  
  例如:  
  传递:  
  string   url=“http://www.cnblogs.com/aierong/admin/EditPosts.aspx?opt=“+Server.UrlEncode(“我们“);  
  Response.Redirect(url);  
  接收:  
  string   str=Server.UrlDecode(Request.QueryString[“opt“]);  
  这样str就等于“我们“  
  当然我们还有一省事的方法:  
  在web.config中修改globalization节为  
  <globalization    
                          requestEncoding="gb2312"    
                          responseEncoding="gb2312"    
  />


ASP.NET状态存储管理九大兵器之三(隐藏的窗体字段)    
  利用隐藏的窗体字段在客户机和服务器间传递数据也是可行的  
  例如:  
  <input   type="hidden"   name="aa"   value="abc">  
  string   str=Request.Form["aa"];  
  str就等于“abc“  
  总结,最好不要放安全性高的数据,例如不要传递密码,银行卡号码等数据  
   
  ASP.NET状态存储管理九大兵器之四(暂存状态)    
  ASP.NET提供一个类System.Web.HttpContext   ,用来表示上下文,此对象有一个属性Items    
  暂存状态就是利用HttpContext.Items属性来存放数据  
  MSDN中HttpContext.Items属性的解释是这样的:获取可用于在   HTTP   请求过程中在   IHttpModule   和   IHttpHandler   之间组织和共享数据的键值  
  HttpContext.Items属性中可以存放任何类型数据,无论这个属性中存放什么数据,都会在请求处理结束后自动清除,这就是暂存状态,数据的存放时间非常短.  
     
   
  //例如:  
  //我们有一页面A.ASPX,有一按钮ID:Submit,点按钮把页面转向b.aspx页面  
  public   void   Submit_Click(Object   sender,   EventArgs   E)  
  {  
          SqlConnection   myConnection   =   new   SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");  
          SqlDataAdapter   myCommand   =   new   SqlDataAdapter("select   *   from   Authors",   myConnection);  
          DataSet   ds   =   new   DataSet();  
          myCommand.Fill(ds,   "Authors");  
          //把数据放入暂存中  
          Context.Items["MyData"]   =ds;  
          Server.Transfer(b.aspx);          
  }  
   
  //b.aspx页面中  
  public   void   Page_Load(Object   sender,   EventArgs   E)  
      {  
          if   (!IsPostBack)  
          {  
          //取得暂存数据  
          DataSet   ds=(DataSet)Context.Items["MyData"];  
          //其它数据过程  
posted @ 2009-07-22 22:32  夜色狼  阅读(200)  评论(0编辑  收藏  举报