在頁間傳遞伺服器控制項值 [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 ...