乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Asp.net頁面之間的傳值 - Study

       素行 2007-03-16

      1.  使用QueryString變量
          QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數(shù)值時,可以使用這個方法。但是對于傳遞數(shù)組或對象的話,就不能用這個方法了。下面是一個例子:
      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類似,作用于用戶個人,所以,過量的存儲會導致服務器內(nèi)存資源的耗盡。
      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一樣,其是什對每一個用戶而言的,但是有個本質(zhì)的區(qū)別,即Cookie是存放在客戶端的,而session是存放在服務器端的。而且Cookie的使用要配合ASP.NET內(nèi)置對象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方法
          這個才可以說是面象對象開發(fā)所使用的方法,其使用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;
      }

      ====================================================================

      引言
      ASP.NET提供了卓越的事件驅動編程模型,讓開發(fā)者簡化了應用程序的總體設計,但是這個也造成了它固有的一些問題,例如,使用傳統(tǒng)的ASP里,我們可以通過使用POST方法很容易地實現(xiàn)頁面間傳遞值,同樣的事情,在使用事件驅動編程模型的ASP.NET就不是那么容易了,當然了,我們?nèi)匀挥幸恍┓椒梢詫崿F(xiàn)同樣的功能。本文將試著使用不同的可能的方法來解決這個問題,但可以預見是,本文將包含使用querystring,session變量以及server.Transfer方法來實現(xiàn)頁面間的值傳遞。

      使用QueryString
      使用QuerySting在頁面間傳遞值已經(jīng)是一種很老的機制了,這種方法的主要優(yōu)點是實現(xiàn)起來非常簡單,然而它的缺點是傳遞的值是會顯示在瀏覽器的地址欄上的(不安全),同時又不能傳遞對象,但是在傳遞的值少而安全性要求不高的情況下,這個方法還是一個不錯的方案。使用這種方法的步驟如下:
      1,使用控件創(chuàng)建web表單(form)
      2,創(chuàng)建可以返回表單的按鈕和鏈接按鈕
      3,在按鈕或鏈接按鈕的單擊事件里創(chuàng)建一個保存URL的字符變量
      4,在保存的URL里添加QueryString參數(shù)
      5,使用Response.Redirect重定向到上面保存的URL
      下面的代碼片斷演示了如何實現(xiàn)這個方法:
      源頁面代碼:
      private void Button1_Click
      (object sender, System.EventArgs e)
      {
      string url;
      url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
      Response.Redirect(url);
      }
      目標頁面代碼:
      private void Page_Load
      (object sender, System.EventArgs e)
      {
      Label1.Text=Request.QueryString["name"];
      Label2.Text=Request.QueryString["email"];
      }

      使用Session變量
      使用Session變量是可以在頁面間傳遞值的的另一種方式,在本例中我們把控件中的值存在Session變量中,然后在另一個頁面中使用它,以不同頁面間實現(xiàn)值傳遞的目的。但是,需要注意的是在Session變量存儲過多的數(shù)據(jù)會消耗比較多的服務器資源,在使用session時應該慎重,當然了,我們也應該使用一些清理動作來去除一些不需要的session來降低資源的無謂消耗。使用Session變量傳遞值的一般步驟如下:
      1,在頁面里添加必要的控件
      2,創(chuàng)建可以返回表單的按鈕和鏈接按鈕
      3,在按鈕或鏈接按鈕的單擊事件里,把控件的值添加到session變量里
      4,使用Response.Redirect方法重定向到另一個頁面
      5,在另一個頁面提取session的值,在確定不需要使用該session時,要顯式清除它
      下面的代碼片斷演示了如何實現(xiàn)這個方法:
      源頁面代碼:
      private void Button1_Click
      (object sender, System.EventArgs e)
      {
      //textbox1 and textbox2 are webform
      //controls
      Session["name"]=TextBox1.Text;
      Session["email"]=TextBox2.Text;
      Server.Transfer("anotherwebform.aspx");
      }
      目標頁面代碼:
      private void Page_Load
      (object sender, System.EventArgs e)
      {
      Label1.Text=Session["name"].ToString();
      Label2.Text=Session["email"].ToString();
      Session.Remove("name");
      Session.Remove("email");
      }

      使用Server.Transfer
      這個方法相比上面介紹的方法稍微復雜一點,但在頁面間值傳遞中卻是特別有用的,使用該方法你可以在另一個頁面以對象屬性的方式來存取顯露的值,當然了,使用這種方法,你需要額外寫一些代碼以創(chuàng)建一些屬性以便可以在另一個頁面訪問它,但是,這個方式帶來的好處也是顯而易見的??傮w來說,使用這種方法是簡潔的同時又是面向對象的。使用這種方法的整個過程如下:
      1,在頁面里添加必要的控件
      2,創(chuàng)建返回值的Get屬性過程
      3,創(chuàng)建可以返回表單的按鈕和鏈接按鈕
      4,在按鈕單擊事件處理程序中調(diào)用Server.Transfer方法轉移到指定的頁面
      5,在第二個頁面中,我們就可以使用Context.Handler屬性來獲得前一個頁面實例對象的引用,通過它,就可以使用存取前一個頁面的控件的值了
      以下代碼綜合實現(xiàn)上述步驟過程的代碼:
      源頁面代碼:
      把以下的代碼添加到頁面中
      public string Name
      {
      get
      {
      return TextBox1.Text;
      }
      }

      public string EMail
      {
      get
      {
      return TextBox2.Text;
      }
      }
      然后調(diào)用Server.Transfer方法
      private void Button1_Click
      (object sender, System.EventArgs e)
      {
      Server.Transfer("anotherwebform.aspx");
      }
      目標頁面代碼:
      private void Page_Load
      (object sender, System.EventArgs e)
      {
      //create instance of source web form
      WebForm1 wf1;
      //get reference to current handler instance
      wf1=(WebForm1)Context.Handler;
      Label1.Text=wf1.Name;
      Label2.Text=wf1.EMail;
      }

      總結
      本文講述了使用不同的方法實現(xiàn)了ASP.NET頁面間值傳遞,這三種方法是:QueryString,Session和Server.Transfer,我們應該反覆體會幾種方法的異同
      我希望本文能給你有用的助益,直到在你的代碼中運用自如!

      使用QueryString的問題可能出在組合url和表達復雜業(yè)務類型比較麻煩。

      使用Application不應該,因為來自客戶端不同會話頁面訪問有并發(fā)的可能,使用全局的參數(shù)肯定會造成錯誤。例如A會話中有Application["name"]="aa",B會話Application["name"]="bb",既可能A會話覆蓋B會話的參數(shù),也可能B會話覆蓋A會話的參數(shù)。

      使用Session基本上與Application一樣。只不過因為這種覆蓋之可能出現(xiàn)在同一會話內(nèi)的兩個頁面,而不是影響所有會話,所以出現(xiàn)相互覆蓋的幾率很小。但是頁面上如果都使用Session["name"]的情況下如果頁面異步同時提交服務器仍然是必然出現(xiàn)這種沖突。另外,應該用Cache來代替Session。

      Transfer只適合于服務器端重定向的頁面。本來它很重要。目前,我看還是很少有人愿意用這種定向方法。在Transfer的時候的那種msdn上寫的方法(取得原來頁面的變量)不太科學,因為你開發(fā)頁面的時候不一定限制了只允許一個頁面(a頁面)重定向過來,所以不應將handler強制轉換為a類型。實際上transfer也應該使用與response.redirect相同的方法傳遞參數(shù)。

      傳遞參數(shù),不論參數(shù)多少,都在url形成一個?id=xxxxxxxxxxxxxx的形式的標記,然后在cache中以隨機產(chǎn)生的xxxxxxxxxxxxxxxx作為下標增加一個對象,這樣比較好。既避免了對象與字符串之間的轉換,又傳遞了大量復雜數(shù)據(jù),又在客戶端隱藏了對象內(nèi)容。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多