• <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

            公告

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

            積分與排名

            • 積分 - 184838
            • 排名 - 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久久久久| 亚洲综合婷婷久久| 国产精品免费久久久久影院| 香蕉久久永久视频| 精品久久久久香蕉网| 一本大道加勒比久久综合| 三级片免费观看久久| 日韩AV无码久久一区二区| 国产巨作麻豆欧美亚洲综合久久| 欧美成a人片免费看久久| 亚洲AV无码久久精品蜜桃| 国产精品99久久不卡| 人妻少妇久久中文字幕| 久久久久香蕉视频| 成人妇女免费播放久久久| 久久精品国产只有精品66| 亚洲精品白浆高清久久久久久| 精品久久综合1区2区3区激情| 午夜精品久久久久久毛片| 久久青青国产| 国内精品久久久久久久coent| 欧美丰满熟妇BBB久久久| 午夜精品久久久久久影视777| 久久―日本道色综合久久| 亚洲综合伊人久久综合| 性做久久久久久久久浪潮| 久久强奷乱码老熟女网站| 99久久中文字幕| 国内精品久久久久影院优| 久久久亚洲AV波多野结衣| 亚洲国产成人久久综合区| 久久精品国产99久久香蕉| 91麻精品国产91久久久久| 久久精品国产影库免费看| 国产91久久精品一区二区| 欧洲人妻丰满av无码久久不卡| 精品熟女少妇AV免费久久| 国产A级毛片久久久精品毛片| 精品国产乱码久久久久软件| 久久久久久精品成人免费图片|