話說各位進行頁面之間相互傳值,基本上都是使用的是session,application,cookie,QueryString,很少有人使用Server.Transfer()進行傳值,今天下午特意研究和學習了下頁面傳值的的幾種方法,在coding中學會了很多意識和思想,感覺蠻受用的,特別對server.Transfer()進行的學習和理解,以及體會和感悟,自己隨即記錄和保存下來,希望以後翻開自己的博客瀏覽的時候,還記得當初學習的感覺和時光。用於記錄自己的學習成長曆程吧,權當用於承載自己轉行後的記錄點滴...
首先新建一個項目,用於WEB應用程式,具體頁面控件有些什麼,請見圖1
圖1:
文本框,用於輸入你自己要傳給其他頁面的值,不過通常別人在這裏是指的是用戶名,以及企業應用系統中的參數等。
然後,再添加第2頁面,用於第一頁面進行傳值的目標頁面,見下圖2
圖2:
第三,我們開始進行頁面傳值,這裏主要是講Server.Transfer()進行傳值,因爲這個方法是基於面向對象的,大家都覺得OO思想是比較時髦的,至少現在是這樣。所以我也modern一回,^_^。使用此方法進行傳值,必須要在第一web,進行的值進行保存,其實在這裏主要是使用了一個屬性進行值保存,如果別的頁面要進行訪問,那這裏就必須把屬性進行共享,設置爲public,否則無法訪問會提示報錯,而且設置字段進行訪問也可以,但是傳值不了,具體原因我也不知道,這希望各位說說,解惑一下,多謝!請看註釋部分
01 |
public partial class firstset : System.Web.UI.Page |
02 |
{ |
03 |
protected void Page_Load( object sender, EventArgs e) |
04 |
{ |
05 |
} |
06 |
public string Name |
07 |
{ |
08 |
get { return this .txtvalue.Text.Trim().ToString(); } |
09 |
} |
10 |
// public string paravalue; |
11 |
|
12 |
protected void btnTransfer_Click( object sender, EventArgs e) |
13 |
{ |
14 |
this .Server.Transfer( "second.aspx" ); //注意:使用此方法 ,IE地址欄位地址不會變. |
15 |
//paravalue = this.txtvalue.Text; |
16 |
} |
17 |
} |
上面代碼用於進行設置值在傳遞前的工作
第四,因爲第三進行了頁面傳值,那麼就在你點擊按鈕【傳值】後進行頁面轉向,隨即第2頁面獲取並顯示值
代碼如下:
2 {
3 protected void Page_Load(object sender, EventArgs e)
4 {
5 firstset a;
6 a = (firstset)Context.Handler;
7 string getvalue;
8 getvalue =a.Name;
9 Response.Write(getvalue);
10
11 }
12 }
13
代碼分析:
首先對第一頁面的對象進行一個實例化,firstset a; firstset是第一頁面的頁面後臺代碼類,如果不是和頁面名稱相同,那你在HTML視圖中的頂端將 Inherits="firstset",引號裏面設置你的後臺代碼的類名就OK了,這裏就是一個OO思想的使用,對象實例話,呵呵,自己認爲的,不過的確是如此,然後如果要使用server.Transfer()傳值就必須使用Context.Handler,此功能是.NET提供的,值得研究和學習,不過這只是一個傳遞過來的HTTP流對象,你必須強制轉化成第一頁面的類型,
然後獲取第一頁面的屬性值.
這只是我個人的理解,便於自己記錄和學習,希望大家討論....