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

            公告

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

            積分與排名

            • 積分 - 183665
            • 排名 - 141

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜


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

                    關于不同頁面之間傳遞參數,一般常規用法是:  
                    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 思勤無邪 閱讀(1486) 評論(0)  編輯 收藏 引用 所屬分類: .NET
            久久精品aⅴ无码中文字字幕不卡| 99久久精品免费看国产一区二区三区 | 色老头网站久久网| 麻豆成人久久精品二区三区免费 | 久久se精品一区二区| 国产精品永久久久久久久久久| 久久毛片一区二区| 99久久无色码中文字幕| 久久精品无码一区二区无码| 久久―日本道色综合久久| 国产综合久久久久久鬼色| 亚洲精品乱码久久久久久蜜桃图片 | 国产韩国精品一区二区三区久久| 狠狠人妻久久久久久综合| 秋霞久久国产精品电影院| 欧美亚洲国产精品久久久久| 久久综合狠狠色综合伊人| 亚洲精品国产字幕久久不卡| 久久人人爽人爽人人爽av| 国产精品狼人久久久久影院 | 午夜精品久久久久久久无码| 久久精品中文字幕有码| 久久天天躁狠狠躁夜夜av浪潮 | 亚洲中文字幕无码久久2020| 狠狠色丁香婷婷久久综合五月| 久久国产欧美日韩精品免费| 久久青青草原国产精品免费 | 久久99热这里只频精品6| 国产精品美女久久久久av爽| 久久精品亚洲中文字幕无码麻豆| 久久久久久精品免费免费自慰 | 久久国产精品免费| 青青草国产成人久久91网| 国产精品久久久久影视不卡| 精品久久久久久亚洲精品 | 人妻精品久久久久中文字幕一冢本| 无码人妻久久一区二区三区蜜桃 | 久久久久亚洲国产| 无码八A片人妻少妇久久| 久久久久国产精品嫩草影院| 亚洲午夜久久久久久久久电影网 |