net(c#)跨頁面?zhèn)髦捣椒偨Y(jié)一_第1頁
net(c#)跨頁面?zhèn)髦捣椒偨Y(jié)一_第2頁
net(c#)跨頁面?zhèn)髦捣椒偨Y(jié)一_第3頁
net(c#)跨頁面?zhèn)髦捣椒偨Y(jié)一_第4頁
net(c#)跨頁面?zhèn)髦捣椒偨Y(jié)一_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、net(c#)跨頁面?zhèn)髦捣椒偨Y(jié) 一 方式1:在接收頁 的html代碼里加上一行: <% Reference Page = "WebForm1.aspx" %>WebForm1 fp=(WebForm1)Context.Handler;this.TextBox1.Text=; /name 是第一頁的public變量Context 提供對整個當(dāng)前上下文(包括請求對象)的訪問。您可以使用此類共享頁之間的信息。方式2:GET方式在發(fā)送頁public int sum=0;int i =int.Parse(this.TextB

2、ox1.Text)*2;Server.Transfer("WebForm2.aspx?sum="+i);接收頁this.TextBox1.Text=Request"sum".ToString();or this.TextBox1.Text=Request.Params"sum".ToString();this.TextBox1.Text=Request.QueryString"sum"方法3:全局變量發(fā)送頁:Application"s

3、um"=this.TextBox1.Text;Server.Transfer("WebForm2.aspx");接收頁:this.TextBox1.Text=(string)Application"sum"Application實質(zhì)上是整個虛擬目錄中所有文件的集合,如果想在整個應(yīng)用范圍內(nèi)使用某個變量值,Application對象將是最佳的選擇方法4:發(fā)送頁:1.定義靜態(tài)變量: public static string str=""2. str=this.TextBox1

4、.Text;Server.Transfer("webform2.aspx");接收頁:1.引入第一頁的命名空間:using WebApplication1;2 this.TextBox1.Text=WebForm1.str;另外三種最常見的傳值A(chǔ)SP.NET WEB FORMS 給開發(fā)者提供了極好的事件驅(qū)動開發(fā)模式。然而這種簡單的應(yīng)用程序開發(fā)模式卻給我們帶來了一些小問題,舉個例子,在傳統(tǒng)的ASP應(yīng)用程序中,你能夠通過 POST方法很容易的把一個值或多個值從一個頁面?zhèn)魉偷搅硪粋€頁面(request()/request.form() /request.query

5、string(),用同樣的方法在ASP.NET中實現(xiàn)有點麻煩。在這里,通過其他方式來解決這種情形。ASP.NET為我們提供了三種方式,一種是可以通過用QueryString來傳送相應(yīng)的值,再一種是通過session變量來傳送相應(yīng)的值,還有就是通過 Server.Transfer方法來實現(xiàn)。一、使用QuerystringQuerystring是一種非常簡單的傳值方式,其缺點就是會把要傳送的值顯示在瀏覽器的地址欄中,并且在此方法中不能夠傳遞對象。如果你想傳遞一個安全性不是那么太重要或者是一個簡單的數(shù)值時,用此方法最好不過了。下面通過一個小例子來完成傳值工作,步驟如下:1、創(chuàng)建一個web form2

6、、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox23、為button按鈕創(chuàng)建click事件代碼如下:private void button_click(object sender,System.EventArgs e)string url;url="webform2.aspx?name="+TextBox1.Text + "&Email="+TextBox2.Text;Response.Redirect(url);4、新建一個目標(biāo)頁面命名為webform25、在

7、webform2中放置兩個Label1,Label2在webform2的Page_Load中添加如下代碼:private void Page_Load(object sender,System.EventArgs e)Label1.Text=Request.QueryString"name"Label2.Text=Request.QueryString"Email"運行,即可看到傳 遞后的結(jié)果了。二、使用Session變量使用Session變量傳值是一種最常見的方式了,此中方式不僅可以把值傳遞到下一個頁面,還可以交叉?zhèn)鬟f到

8、多個頁面,直至把Session變量的值removed后,變量才會消失。舉個例子看看:1、創(chuàng)建一個web form2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox23、為button按鈕創(chuàng)建click事件代碼如下:private void button_click(object sender,System.EventArgs e)Session"Name"=TextBox1.Text;Session"Email"=TextBox2.Text;Response.Redirect(

9、"webform2.aspx");4、新建一個目標(biāo)頁面命名為webform25、在webform2中放置兩個Label1,Label2在webform2的Page_Load中添加如下代碼:private void Page_Load(object sender,System.EventArgs e)Label1.Text=Session"Name".ToString();Label2.Text=Session"Email".ToString();Session.Remove(&q

10、uot;Name");Session.Remove("Email");運行,即可看到傳遞后的結(jié)果了。三、使用Server.Transfer雖然這種方法有點復(fù)雜,但也不失為一種在頁面?zhèn)髦档姆绞?。舉個例子看看:1、創(chuàng)建一個web form2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox23、為button按鈕創(chuàng)建click事件代碼如下:private void (object sender,System.EventArgs e)Server.Transfer("webform2.

11、aspx");4、創(chuàng)建過程來返回TextBox1,TextBox2控件的值代碼如下:public string Nameget return TextBox1.Text;public string Emailgetreturn TextBox2.Text;5、新建一個目標(biāo)頁面命名為webform26、在webform2中放置兩個Label1,Label2在webform2的Page_Load中添加如下代碼:private void Page_load(object sender,System.EventArgs e)/創(chuàng)建webform的實例webform1 wf1;/獲得實

12、例化的句柄wf1=(webform1)Context.Handler;Label1.Text=wf1.Name;Label2.Text=wf1.Email;常見的就是這三種方法。上面方法一中的傳值問題問:在asp中頁面間傳值使用url?方式 例如 "index.asp?aaa=華東五市+水鄉(xiāng)六日游"因為字符串"華東五市+水鄉(xiāng)六日游"中間有加號,與asp系統(tǒng)字符串連接符關(guān)鍵字沖突,傳過去的變量aaa的值就會變成"華東五市",請問大家有什么解決辦法?解決:1.server.urlencode

13、("華東五市+水鄉(xiāng)六日游")2.URLEncodeThe URLEncode method applies URL encoding rules, including escape characters, to a specified string.SyntaxServer.URLEncode( string )ParametersstringSpecifies the string to encode.ExampleThe following script<%Response.Write(Server.URLEncode("

14、") %>produces the output3.index.asp?aaa=華東五市+水鄉(xiāng)六日游4.自己定義一些特殊字符對應(yīng) "+","*","#"例如,Replace(string,"+","CODE01")然后到另一個頁面在用Replace(string,"CODE01","+")換回來即可了 自己定義一些

15、特 殊字符對應(yīng) "+","*","#"例如,Replace(string,"+","CODE01")然后到另一個頁面在用Replace(string,"CODE01","+")換回來即可了在頁面間傳遞引用有不少文章討論怎么在兩個頁面間傳遞引用,如果你頁面上的對象設(shè)置為public的話,你就可以傳遞他們在頁面間。在頁面間傳遞是使用Server.Tr

16、ansfer替代Response.Redirect就可以。例子:-In Page A codebehind:public class PageA : System.Web.UI.Pagepublic System.Web.UI.WebControls.TextBox TextBox1;public System.Web.UI.WebControls.Button Button1;/ standard page code (Page_Load, etc)/ ./ .private void Button1_Click(object sender, System.EventArgs e)Serve

17、r.Transfer("b.aspx");-In Page B codebehind:private void Page_Load(object sender, System.EventArgs e)PageA myAPage = Context.Handler as PageA;string textboxFromPageA = myAPage.TextBox1.Text;因為當(dāng)使用Server.Transfer時所有的對象(A and B)在服務(wù)器上當(dāng)時都是活動的,你可以引用任何東西。稍微修改一下b.aspx(uestc95 提供):Page myPag

18、e =(Page) Context.Handler;string textboxFromPageA;textboxFromPageA = (TextBox)myPage.FindControl("TextBox1").Text;這樣在A.aspx中就可以正常的使用protected類型的了#1. 使用QueryString變量QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結(jié)構(gòu)簡單的數(shù)值時,可以使用這個方法。但是對于傳遞數(shù)組或?qū)ο蟮脑挘筒荒苡眠@個方法了。下面是一個例子:a.asp

19、x的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 對象變量A

20、pplication對象的作用范圍是整個全局,也就是說對所有用戶都有效。其常用的方法用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;Applic

21、ation.Lock();name = Application"name".ToString();Application.UnLock();3. 使用Session變量想必這個肯定是大家使用中最常見的用法了,其操作與Application類似,作用于用戶個人,所以,過量的存儲會導(dǎo)致服務(wù)器內(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是存放在服務(wù)器端的。而且Cookie的使用要配合ASP.NET內(nèi)置對象Request來使用。a.aspx的C#代碼private void Button1_Click(object se

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論