css&javascript aspx網頁間傳值

aspx網頁間的傳值與標準html的做法有些不大一樣
我個人覺得傳統作法還比較好用一點

標準大概是這樣:
<form action="要去的地方" method=" post | get ">
如此就可以把值丟過去

而asp有3種作法

一、程式碼:

protected void Button1_Click(object sender, EventArgs e)
        {
          Response.Redirect(String.Format("result.aspx?username={0}&password={1}",TextBox1.Text,TextBox2.Text));
        }

以上的意思是,在按下Click後
伺服器回應「重新轉向」
Response.Redirect("網址")

這是頗簡單的作法,不過有個小問題
這會使伺服器與使用者溝通比較多次:
  1. Client端按下:送出資料到Server
  2. Server回應:請轉到這個網址
  3. Client端發出需求:到指定的網址
  4. Server回應:依Client端到指定的網址
這「按一下」的背後動作,其實Client與Server溝通了2次
難道不能按一下就送出嗎?
當然有啊!

二、程式碼:

protected void Button1_Click(object sender, EventArgs e)
        {
            Server.Transfer(String.Format("result.aspx?username={0}&password={1}", TextBox1.Text, TextBox2.Text));
        }
以上的意思是,按下Click後
伺服器回應轉換
Server.Transfer("網址");

伺服器接到資料,直接回應轉換後的網頁
只會有一次溝通,不過這樣網址列不會有任何變化
輸入資料的叫「AA」網頁
按下後其實已經轉到「BB」網頁
不過網址列仍然只會顯示是:「AA」
而第一個方法就會有BB網頁的紀錄


以上是用程式碼實現轉換,其實還有更簡單的作法
在資料輸入頁→ button按鈕 →屬性 → PostBackUrl → 輸入要去的網頁
這樣就好,這樣按下就會轉去網頁
而在取得資料網頁上撰寫對應的就好,如下:

三、程式碼

protected void Page_Load(object sender, EventArgs e)
{
    // 第1及第2個方法取得傳來的值
    // Label1.Text = Request.QueryString["username"];
    // Label2.Text = Request.QueryString["password"];

    // 第3個方法取值
    TextBox tb;
    // PreviousPage.FindControl,前個網頁中的控制項
    tb = PreviousPage.FindControl("TextBox1") as TextBox;
    Label1.Text = tb.Text;
    tb = PreviousPage.FindControl("TextBox2") as TextBox;
    Label2.Text = tb.Text;


}

留言

熱門文章