頁面之間傳遞資料2

2021-04-02 03:06:41 字數 4935 閱讀 5187

在頁間傳遞伺服器控制項值  [visual basic]請參見

@ page 指令 | httpserverutility.transfer | textbox | ihttphandler | handler

語言c#

visual basic

全部顯示

當建立 web 窗體應用程式時,經常需要將資訊從乙個 web 窗體頁傳遞到另乙個 web 窗體頁。這允許在乙個 web 窗體頁上輸入資訊,然後將該資訊提交到另乙個頁進行處理。

使用內聯**在 web 窗體頁間傳遞值的設計模式與使用**隱藏檔案的設計模式稍微有所不同。選擇哪種設計模式取決於您是喜歡使用內聯**還是**隱藏檔案。將在下面的節中對兩種設計模式進行討論。

使用內聯**的設計模式

當使用**內聯將值傳遞到另乙個 web 窗體頁時,您首先需要為包含所要傳送資訊的 web 窗體頁指定類名。通過在 @ page 指令中包括 classname 屬性和類的名稱為該 web 窗體頁指定類名。然後,在該類中為要共享的每個值建立乙個具有 get 訪問器的屬性。get 訪問器應返回您要傳遞的值(例如文字框的值)。若要傳送這些資訊,請使用 server 物件的 transfer 方法將應用程式的控制傳輸到其他 web 窗體頁。

在接收 web 窗體頁上,通過在頁的頂部新增乙個 @reference 指令並將 page 屬性設定為傳送頁來引用傳送頁中宣告的類。然後,接收 web 窗體頁可以通過首先檢索處理程式的例項來訪問資訊,該處理程式首先從 httpcontext 物件的 handler 屬性接收到 http 請求。然後,處理程式物件將轉換為封裝所傳遞資訊的類的例項。該轉換一旦執行,就可以通過轉換後物件的屬性訪問所傳遞的值。

建立將值傳送到另乙個 web 窗體頁的 web 窗體頁

通過在 web 窗體頁的頂部新增 @ page 指令並將 classname 屬性設定為有效的類名來為源 web 窗體頁指定類名。

[visual basic]

<%@ page language="vb" classname="myclassname" %>

[c#]

<%@ page language="c#" classname="myclassname" %>

在該類中為要傳遞到另乙個 web 窗體頁的每個值都定義乙個具有 get 訪問器的屬性。get 訪問器應只返回您要傳遞的值(例如 web 窗體頁上文字框的值)。必須在伺服器端指令碼中定義這些屬性。

[visual basic]

[c#]

當要將資訊傳遞到另乙個 web 窗體頁時(例如當單擊了按鈕時),使用 httpserverutility.transfer 方法結束在當前頁的執行並將應用程式的控制傳輸到另乙個 web 窗體頁。httpserverutility.transfer 方法採用單個引數,該引數允許您指定要將控制傳輸到的 web 窗體頁的 url。

[visual basic]

sub submitbuttonclick(sender as object, e as eventargs)

server.transfer("secondpage.aspx")

end sub

[c#]

void submitbuttonclick(object sender, eventargs e)

下面是乙個完整的示例,顯示如何使用內聯**建立 web 窗體頁以將兩個 textbox 控制項的值傳遞到另乙個 web 窗體頁。該示例的名稱必須是 firstpage.aspx。

[visual basic]

<%@ page language="vb" classname="firstpageclass" %>

[c#]

<%@ page language="c#" classname="firstpageclass" %>

建立從另乙個 web 窗體頁接收值的 web 窗體頁

在接收資訊的 web 窗體頁上,在頁的頂部新增 @reference 指令並將 page 屬性設定為源 web 窗體頁(包含您要傳遞資訊的 web 窗體頁)。

<%@ reference page="firstpage.aspx" %>

在伺服器端指令碼中宣告乙個變數,以儲存在傳送資訊的 web 窗體頁中定義的類的例項。

[visual basic]

[c#]

建立乙個自定義 page_load 事件處理程式,當 web 窗體頁不回發到其本身時,該處理程式將當前 http 請求的 ihttphandler 實現的物件分配給上一步中宣告的變數。使用 ispostback 屬性可確定是否將該頁回發到其本身。ihttphandler 實現的物件包含首先接收 http 請求的處理程式的例項。因為 ihttphandler 實現的物件與上一步宣告的變數屬於不同的物件型別,所以必須首先將它轉換為封裝從第乙個 web 窗體頁傳送的資訊的類,然後才可以將它指派給該變數。使用 httpcontext 物件的 handler 屬性來檢索處理程式物件。

[visual basic]

[c#]

第二步中宣告的變數現在包含封裝上乙個 web 窗體頁中資訊的類的例項。使用該變數訪問類(該類包含從上乙個 web 窗體頁傳送的資訊)的屬性。可以通過程式設計方式訪問這些值以執行計算,或者只是使用指令碼分隔符 <%= 和 %> 來顯示它們。

hello <%=fp.firstname%>

下面顯示乙個完整的 web 窗體頁,該頁從另乙個 web 窗體頁接收兩個值。然後,這些值顯示在 web 窗體頁上。您必須將該示例叫做 secondpage.aspx。

[visual basic]

<%@ page language="vb" %>

<%@ reference page="firstpage.aspx" %>

[c#]

<%@ page language="c#" %>

<%@ reference page="firstpage.aspx" %>

使用**隱藏檔案的設計模式

當使用**隱藏檔案時,**隱藏檔案包含與 web 窗體頁關聯的**的類宣告。在傳送資訊的 web 窗體頁的**隱藏檔案中,首先在類中為要共享的每個值建立乙個具有 get 訪問器的屬性。get 訪問器應返回您要傳遞的值(例如文字框的值)。若要傳送這些資訊,請使用 server 物件的 transfer 方法將應用程式的控制傳輸到其他 web 窗體頁。

在接收 web 窗體頁上,通過在頁的頂部新增 @reference 指令並將 page 屬性設定為傳送頁來引用在傳送頁中宣告的類。然後您可以檢索處理程式的例項,該處理程式首先從 httpcontext 物件的 handler 屬性接收 http 請求。

注意   若要使在傳送 web 窗體頁中宣告的類在接收 web 窗體頁的**隱藏檔案中可用,您必須使用命令列編譯器將每個 web 窗體頁的**隱藏檔案手動編譯為單個 .dll 檔案。該 .dll 檔案必須放置在 web 窗體應用程式的 /bin 目錄中。

然後,處理程式物件將轉換為封裝所傳遞資訊的類的例項。該轉換一旦執行,就可以通過轉換後物件的屬性訪問所傳遞的值。

從不同的 web 窗體頁傳送伺服器控制項值

為傳送 web 窗體頁建立**隱藏檔案,此檔案包含與該頁關聯的**的類宣告。

[visual basic]

imports system

' add other references here.

public class firstpageclass

inherits system.web.ui.page

' add class code here.

end class

[c#]

imports system

// add other references here.

public class firstpageclass : system.web.ui.page

若要在**隱藏檔案宣告的類中訪問 web 窗體頁上的伺服器控制項,請在表示要訪問的伺服器控制項的類中宣告受保護的變數。

[visual basic]

protected firstnametextbox as system.web.ui.webcontrols.textbox

[c#]

protected system.web.ui.webcontrols.textbox firstnametextbox;

在第一步宣告的類中,為要傳遞到另乙個 web 窗體頁的每個值都定義乙個具有 get 訪問器的屬性。get 訪問器應只返回您要傳遞的值(例如 web 窗體頁上文字框的值)。

[visual basic]

public readonly property firstname() as string

get' firstnametextbox is the name of a textbox control.

return firstnametextbox.text

end get

end property

[c#]

public string firstname

}當要將資訊傳遞到另乙個 web 窗體頁時(例如當單擊按鈕時),使用 httpserverutility.transfer 方法結束在當前頁上的執行並將應用程式的控制傳輸到另乙個 web 窗體頁。httpserverutility.transfer 方法採用單個引數,該引數允許您指定要將控制傳輸到的 web 窗體頁的 url。

[visual basic]

sub submitbuttonclick(sender as object, e as eventargs)

server.transfer("secondpage.aspx")

end sub

[c#]

void submitbuttonclick(object sender, eventargs e)

為傳送資訊的 web 窗體頁建立介面。確保將 inherits 屬性新增到 @ page 指令,並將其設定為在**隱藏檔案中宣告的類。

[visual basic]

<%@ page language="vb" inherits="firstpageclass" %>

頁面之間的資料傳遞

頁面之間的資料傳遞 1 a.jsp提交資料到b.jsp a.jsp b.jsp string u request.getparameter num out.print u 2 url位址列傳引數 1 乙個頁面被訪問的時候,獲取位址列中的引數 http localhost 8081 myweb a.j...

頁面之間的值傳遞

頁面之間的值傳遞方式有很多,由於最近有用到,所以學習了一下,以下記錄 1.querystring方法 引數傳遞通過頁面重定向 response.redirect end.aspx?引數名 引數值 在新頁面引數的獲取方式 string 字元名 request.querystring 傳遞的引數名 2....

不同頁面之間傳遞值

注 此系列記錄在我實際開發中遇到的問題和收藏一些技巧文章。本篇技巧和訣竅記錄的是 不同頁面之間傳遞值,非常簡單的技巧,我相信大家都知道。這個場景太常見了,當然有許多許多的方法,我來介紹一種非常簡單的方法吧!a頁面 b頁面。需要在b頁面獲取a頁面的資訊。a頁面 form id form1 runat ...