解析6種ASP.NET跨頁面傳值的方法_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:解決asp.net訪問IIS元數據庫失敗的方法
      調試Asp.net程序時,出現了“訪問IIS元數據庫失敗”的錯誤信息,解決方法如下: 1、依次點擊“開始”-“運行”。 2、在“運行”欄內輸入 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe-i(不含引號),然后點“確定”按鈕。 3、出現的

      1.  使用QueryString變量 
      QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。但是對于傳遞數組或對象的話,就不能用這個方法了。下面是一個例子: 
      a.aspx的C#代碼 
      private void Button1_Click(object sender, System.EventArgs e) 

          string s_url; 
          s_url = "b.aspx?name=" + Label1.Text; 
          Response.Redirect(s_url); 


      b.aspx中C#代碼 
      private void Page_Load(object sender, EventArgs e) 

          Label2.Text = Request.QueryString["name"]; 


      2.  使用Application 對象變量 
      Application對象的作用范圍是整個全局,也就是說對所有用戶都有效。其常用的方法用Lock和UnLock。 

      a.aspx的C#代碼 
      private void Button1_Click(object sender, System.EventArgs e) 

          Application["name"] = Label1.Text; 
          Server.Transfer("b.aspx"); 


      b.aspx中C#代碼 
      private void Page_Load(object sender, EventArgs e) 

          string name; 
          Application.Lock(); 
          name = Application["name"].ToString(); 
          Application.UnLock(); 


      3.  使用Session變量 
      想必這個肯定是大家使用中最常見的用法了,其操作與Application類似,作用于用戶個人,所以,過量的存儲會導致服務器內存資源的耗盡。 
      a.aspx的C#代碼 
      private void Button1_Click(object sender, System.EventArgs e) 

          Session["name"] = Label.Text; 


      b.aspx中C#代碼 
      private void Page_Load(object sender, EventArgs e) 

          string name; 
          name = Session["name"].ToString(); 


      4.  使用Cookie對象變量 
      這個也是大家常使用的方法,與Session一樣,其是什對每一個用戶而言的,但是有個本質的區別,即Cookie是存放在客戶端的,而session是存放在服務器端的。而且Cookie的使用要配合ASP.NET內置對象Request來使用。 

      a.aspx的C#代碼 
      private void Button1_Click(object sender, System.EventArgs e) 

          HttpCookie cookie_name = new HttpCookie("name"); 
          cookie_name.Value = Label1.Text; 
          Reponse.AppendCookie(cookie_name); 
          Server.Transfer("b.aspx"); 


      b.aspx中C#代碼 
      private void Page_Load(object sender, EventArgs e) 

          string name; 
          name = Request.Cookie["name"].Value.ToString(); 


      5.  使用Server.Transfer方法 
      這個才可以說是面象對象開發所使用的方法,其使用Server.Transfer方法把流程從當前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,所以這個方法是完全面象對象的,簡潔有效。 

      a.aspx的C#代碼 
      public string Name 

          get{ return Label1.Text;} 

      private void Button1_Click(object sender, System.EventArgs e) 

          Server.Transfer("b.aspx"); 


      b.aspx中C#代碼 
      private void Page_Load(object sender, EventArgs e) 

          a newWeb;  //實例a窗體 
          newWeb = (source)Context.Handler; 
          string name; 
          name = newWeb.Name; 


      6.Cross-Page Posting 
      定位至于源網頁位于相同的應用程序的網頁,可以讀取源網頁的值和公共屬性,但是不要按瀏覽器中的重新整理和上一步,這樣會照成無法預期的效果 
      eg: 
      aspx 
        <div> 
              您的名字: <asp:TextBox ID="name" runat="server"> </asp:TextBox> 
              <asp:Button ID="btn_name" runat="server" PostBackUrl="~/Cross-Page Posting/CrossPageTarget.aspx" 
                  Text="傳送" OnClick="btn_name_Click" />  
          </div> 
      cs: 
      TextBox name = (TextBox)PreviousPage.FindControl("name");//非public 成員 
              Label1.Text = "歡迎你:" + name.Text; 
      previouspage本身屬于page類,并且只有在來源網頁和目標網頁屬于同一個asp.net應用程序下的時候才能引用,如果網頁不是跨網頁公布的目標,或者是網頁在不同的應用程序之中,就不會初始化previouspage屬性,就不能使用previouspage來存取任何信息 
      獲得網頁的公共屬性: 
      source.cs: 
      public string UserName 
      {  
          get{return aa.text;} 


      cross-page posting.aspx: 
      <%@ PreviousPageType VirtualPath="~/Cross-Page Posting/Source.aspx"%> 
      cross-page posting.cs: 
      lab.text = previousopage.username; 
      //一個網頁中只能指示一個previousPage,不然出出現編譯錯誤 

      分享:解析GridView中嵌套DropDownList的實現
      效果圖: 后臺代碼: usingSystem; usingSystem.Data; usingSystem.Configuration; usingSystem.Collections; usingSystem.Web; usingSystem.Web.Security; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; usingSystem.Web.UI.WebControls.WebParts; u

      來源:模板無憂//所屬分類:.Net教程/更新時間:2010-03-28
      相關.Net教程