• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            思勤無邪

            上學時,因我年齡最小,個頭也最小,上課時,就像大猩猩堆里的猴一般。如今,這猴偶爾也把最近的一些情況寫在這里。

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              132 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks

            公告

                 吾日常三省吾身,曰思、曰勤、曰無邪。

            積分與排名

            • 積分 - 184856
            • 排名 - 140

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜


                    近來論壇中關于在不同頁面之間傳遞參數的問題很多,在此做一個簡單的說明,希望給給朋友們一些幫助,也希望朋友們能開展更多這方面的討論,歡迎高手們提出自己更好的方法。  

                    關于不同頁面之間傳遞參數,一般常規用法是:  
                    1、通過URL后帶的參數  
            這種方法受限制很多,一是將參數暴露出來,容易帶來一些安全方面的隱患,二是所帶參數如果數量較多,控制起來也很麻煩;  

                    2、通過常規表單中的POST提交  
            這種方法最常用,但在ASP.NET頁面中的FROM控件無法象一般FORM那樣將參數傳到另一頁面,需要通過特定的方式,否則和第一種方式無異。  

                    3、Session方式  
            傳統方式之一,對于特定的環境有利,釋放也比較容易  

                    4、通過接口或類的方式實現。我們主要討論一下這個方法。  
            基于WEB方式,使用變量傳遞必須要使用私有變量,因為很簡單,如果你使用公有或靜態變量,那會出現極大的混亂,朋友們可以考慮一下為什么?  
            如果用類的屬性,一個問題是對象的生存時間和范圍限制我們不能以私有的方式來進行傳遞。  

                    下面是結合一些SDK中的一些方法寫的一個例子,供參考:  

            說明:為了進行更大數量和類型的參數的傳遞,也是chequan朋友的問題,考慮使用結構來實現。結構有其好處,合理使用,應該不會造成太大的資源占用,特別是在這種傳遞上。有想法的朋友也可以一起討論一下結構的使用。  
            例子:  
            做一個類文件,為Trancfer.cs,內容如下:  
            using System;  

            namespace WEBLOG.Class  
            {  
               /// <summary>  
               /// 定義一個結構,需要傳遞的內容可以由自己來定義,可以定義多個結構,以適合自己的需要  
               /// </summary>  
               public struct NormalUserRegInfo  
               {  
                  public string UserName;  
                  public string UserPassWord;  
                  public string Quesion;  
                  public string Answer;  
                  public string UserEmail;  
                  public string UserClass;  
               }  

               /// <summary>  
               /// 此接口定義了一個返回所需傳遞對象的屬性  
               /// 發送對象的頁面必須實現此接口  
               /// </summary>  
               public interface ITransferface  
               {  
                  TrancferClass TranceferObject{get;set;}  
               }  

               /// <summary>  
               /// Trancfer 的摘要說明。  
               /// </summary>  
               public class TrancferClass  
               {  
                  public TrancferClass()  
                  {  
                     //  
                     // TOD 在此處添加構造函數邏輯  
                     //  
                  }  

                  private NormalUserRegInfo _strMessage;  

                  public NormalUserRegInfo TranceferMessage  
                  {  
                     get  
                     {  
                        return this._strMessage;  
                     }  
                     set  
                     {  
                        this._strMessage = value;  
                     }  
                  }  

               }  
            }  

            有了這個類,就可以在頁面中進行操作了,  
            假設我們有一個頁面,名為Set.aspx,通過一個Button將一些參數發到Get.aspx頁面中,  
            這兩個頁面的相關代碼如下:  
            ====================  
            Set.aspx.cs  
            ====================  
            using System;  
            using System.Collections;  
            using System.ComponentModel;  
            using System.Data;  
            using System.Drawing;  
            using System.Web;  
            using System.Web.SessionState;  
            using System.Web.UI;  
            using System.Web.UI.WebControls;  
            using System.Web.UI.HtmlControls;  
            using WEBLOG.Class;  

            namespace WEBLOG  
            {  
               /// <summary>  
               /// Set 的摘要說明。  
               /// </summary>  
               public class Set : System.Web.UI.Page,ITransferface  
               {  
                  protected System.Web.UI.WebControls.Button Button1;  
                  private TrancferClass _temptrancefer;  
                  private void Page_Load(object sender, System.EventArgs e)  
                  {  
                     // 在此處放置用戶代碼以初始化頁面  
                     _temptrancefer = new TrancferClass();  
                  }  

                  #region Web 窗體設計器生成的代碼  
                  override protected void OnInit(EventArgs e)  
                  {  
                     //  
                     // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。  
                     //  
                     InitializeComponent();  
                     base.OnInit(e);  
                  }  
                    
                  /// <summary>  
                  /// 設計器支持所需的方法 - 不要使用代碼編輯器修改  
                  /// 此方法的內容。  
                  /// </summary>  
                  private void InitializeComponent()  
                  {      
                     this.Button1.Click += new System.EventHandler(this.Button1_Click);  
                     this.Load += new System.EventHandler(this.Page_Load);  

                  }  
                  #endregion  

                  //實現ITransferface接口  
                  public TrancferClass TranceferObject  
                  {  
                     get  
                     {  
                        return this._temptrancefer;  
                     }  
                     set  
                     {  
                        this._temptrancefer = value;  
                     }  
                  }  


                  private void Button1_Click(object sender, System.EventArgs e)  
                  {  
                     //定義一個結構,傳遞這個結構  
                     NormalUserRegInfo temptest = new NormalUserRegInfo();  
                     temptest.Answer="AAAAAAAAAAAAAAAA";  
                     temptest.Quesion="BBBBBBBBBBBBB";  
                     temptest.UserName="CCCCCCCCCCCCCCCCC";  
                     temptest.UserPassWord="DDDDDDDDDDDDDDDDDDDDDDDDD";  
                     this.TranceferObject.TranceferMessage = temptest;  

                     //調用Server.Transfer(),轉向執行Get.aspx  
                     Server.Transfer("Get.aspx");  
                  }  
               }  
            }  

            ====================  
            Get.aspx.cs  
            ====================  
            using System.Data;  
            using System.Drawing;  
            using System.Web;  
            using System.Web.SessionState;  
            using System.Web.UI;  
            using System.Web.UI.WebControls;  
            using System.Web.UI.HtmlControls;  
            using WEBLOG.Class;  

            namespace WEBLOG  
            {  
               /// <summary>  
               /// Receiver 的摘要說明。  
               /// </summary>  
               public class Get : System.Web.UI.Page  
               {  
                
                  private void Page_Load(object sender, System.EventArgs e)  
                  {  
                     ITransferface mySender;  

                     if(!IsPostBack)  
                     {  
                        //判斷當前頁面的HttpHandler,如果實現了ITransferface接口  
                        //就轉換成ITransferface  
                        if(Context.Handler is ITransferface)  
                        {  
                           mySender = (ITransferface)Context.Handler;  
                           NormalUserRegInfo tempreceive =mySender.TranceferObject.TranceferMessage;  
                           Response.Write(tempreceive.Answer + "<BR>");  
                           Response.Write(tempreceive.Quesion + "<BR>");  
                           Response.Write(tempreceive.UserName + "<BR>");  
                           Response.Write(tempreceive.UserPassWord + "<BR>");  
                        }  
                        else  
                        {  
                           Response.Write("沒有接收到任何參數");  
                        }  
                     }  
                  }  


                  #region Web 窗體設計器生成的代碼  
                  override protected void OnInit(EventArgs e)  
                  {  
                     //  
                     // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。  
                     //  
                     InitializeComponent();  
                     base.OnInit(e);  
                  }  
                    
                  /// <summary>  
                  /// 設計器支持所需的方法 - 不要使用代碼編輯器修改  
                  /// 此方法的內容。  
                  /// </summary>  
                  private void InitializeComponent()  
                  {      
                     this.Load += new System.EventHandler(this.Page_Load);  

                  }  
                  #endregion  

               }  
            }  
            posted on 2006-10-27 10:12 思勤無邪 閱讀(1492) 評論(0)  編輯 收藏 引用 所屬分類: .NET
            久久99中文字幕久久| 综合久久精品色| 亚洲欧美精品伊人久久| 久久精品99无色码中文字幕| 久久国产精品偷99| 久久笫一福利免费导航| 无码精品久久久天天影视| 久久九九亚洲精品| 亚洲精品97久久中文字幕无码| 久久人人爽人人爽人人片AV不| 99久久国产综合精品网成人影院| 欧美久久一区二区三区| 99久久精品费精品国产一区二区| 中文字幕无码av激情不卡久久| 国产精品久久久久久福利漫画| 尹人香蕉久久99天天拍| 欧美综合天天夜夜久久| 久久综合给合久久狠狠狠97色69| 伊人久久精品影院| 久久99国产精品成人欧美| 91精品国产9l久久久久| 伊人久久大香线蕉综合5g| 久久久久噜噜噜亚洲熟女综合| 久久精品aⅴ无码中文字字幕不卡| 久久这里只有精品视频99| 久久久久久久尹人综合网亚洲| 91麻豆国产精品91久久久| 久久国产三级无码一区二区| 国产精品丝袜久久久久久不卡| 久久精品国产亚洲AV大全| 午夜精品久久久久久99热| 久久久一本精品99久久精品88| 久久男人中文字幕资源站| 青青青国产精品国产精品久久久久 | 久久亚洲AV成人无码国产| 大香伊人久久精品一区二区 | 99久久国产亚洲高清观看2024| 国产国产成人精品久久| 99久久99久久| 91精品国产综合久久香蕉 | 久久不见久久见免费视频7|