页面间传递参数
常用的兩種基本方式: GET ?POST :兩種方式都是發送請求,將數據發出去
編程環境是。net ?,如果是別的編程環境有一定的不同
一、form 表單
1、form 表單的說明
(表單的提交沒有前后臺的交互)
數據的提交,經常關聯的是form ?表單提交,
<form id="form1" ?method="get" action="1.aspx" > ??
<form id="form1" ?method="get" action="1.aspx" ?runat="server"> ?:
?當出現runat="server"的時候,它的優先級別比action="1.aspx"高,所以會出現回發的現象,把action給忽略掉。
我們可以去掉runat="server"來解決這個問題,還可以在不去掉runat="server"的情況下,根據修改提交按鈕,并在提交按鈕點擊事件當中來解決這個問題。
不去掉runat="server":
將提交控件改為服務器控件:
<form?id="form1"?action="1.aspx"?method="post" runat="server">
????<div>
????????<input?id="txtuser"?type="text"? runat="server"/>
????????<input?id="Submit1"?type="submit"?value="提交"? runat="server"/>
</div>?
</form>
然后在提交按鈕的控件當中寫著:
Server.Transfer("1.aspx");這個時候就可以完成兩個頁面之間的傳遞了。注意:這里不可以使用Response.Redirect("1.aspx")否則仍然無法完成此操作。
?
(自己調試出現錯誤提示,Server ?未定義 ?,不到萬不得已,form還是不要runat=server了 )
2、表單內控件的說明
(1)表單內控件,需要服務器進行處理的:讀取數據、響應函數,都需要 runat=server,否則后臺服務器無法讀取到控件。(非服務器控件的內容讀取都是直接在前臺頁面進行的,看到很多都是在js中進行操作。
(2)類型“Button”的控件“Button1”必須放在具有 runat=server 的窗體標記內:
? ?如果只是單純的提交數據,submit用在不加runat=server 的form中就足夠用了,提交給自己,action="",提交給別的頁面 action="1.aspx"
3、get ?post 后臺讀取數據的不同:
get: ? ??string user = Request.QueryString["txtuser"];
post: ? string user = Request.Form["txtuser"];
?二、非form ?表單?
?使用form ?一般和submit 聯合使用,設定好提交的方式,post 或get ,設定好 目標頁面,action="" ?或action="1.aspx",
一點按鈕,數據自動綁定,自動就發送出去了。不用自己綁定,系統自動進行綁定,很明顯的體現在get中,因為在get調用到的目標網頁會是:1.aspx?txtuer=ssss,如果傳遞的參數是漢字,還會轉換成別的編碼方式:1.aspx?txtuser=%E5%B0%8F%E7%A2%97
這種自動綁定相對應的就是 要自己對數據進行幫定,設定數據提交的方式,不適用form
1、響應重定向 ?
Response.Redirect("jsymGet1.aspx?name="+name.Text+"&age="+age.Text+"傳遞數據的方式是"+Request.RequestType);
調用網址:
http://localhost:10209/10%e3%80%81%e4%bc%a0%e9%80%92%e5%8f%82%e6%95%b0/jsymGet1.aspx?name=1122&age=%e5%b0%8f%e6%9d%8e?
顯示:
name:1122;age=小李 ?傳遞數據的方式:GET
?
響應重定向方法是目前為止將一個網頁重定向到另一個網頁的最簡單的方法的最簡單的方法。當Web服務器接到一個重定向請求后,它會將一個響應頭送給客戶端,這將導致客戶端發送一個新的請求到服務器。按句話說,一個重定向請求實際上是兩個請求響應:一個是最初的請求響應,另一個是新的重定向請求響應。
在ASP.NET中實現重定向很容易。下面的代碼演示了如何使用Response.Redirect方法實現網頁重定向:
?protected?void?Redirect_Click(object?sender,?EventArgs?e)?{
????Response.Redirect("menu.aspx");?
}
??? 要注意的是重定向請求只是一個GET請求,這就意味著我們不能從源頁中通過重定向命令提交數據。但是我們可以在重定向中使用查詢字符串來傳遞數據。如下面代碼所示:
{
????????????Response.Redirect("menu.aspx?userName="?+?UserName.Text));?
??????}
上面的例子將一個查詢字符串作為參數傳遞給了Response.Redirect方法的目標URL。我們可以通過如下的代碼獲得源數據。
{
????????string?userName?=?Request["userName"]; ? ? //如此讀取數據 ?掩蓋掉了使用的是GET, ?Request.QueryString[],更為明顯
??????}
2、服務器傳輸方法
? ???Server.Transfer("Menu.aspx",true);?
? ? Response.Redirect和Server.Transfer的比較
由于Response.Redirect方法要進行兩次請求響應操作,因此,我們應該在對性能要求高的網站盡量避免使用這種方法。然而,只從技術上說,使用redirect方式確實可以從一個網頁跳到另一個網頁。相比之下,Server.Transfer會更有效率,但是跳轉的范圍僅限于同一個Web服務器的不同網頁。從本質上說,我們可以使用Server.Transfer來消除不必要的請求響應操作。如果我們需要重定位到不同服務器的網頁,就需要使用Response.Redirect方法。
? 3、跨頁提交概述 :服務器控件 的 PostBackURL 屬性
? ? ? ?在ASP.NET 2.0中,我們可以通過實現IbuttonControl接口提交給不同的WebForm,來實現跨網頁的提交。和Response.Redirect類似,跨網頁提交是一個基于客戶端的傳輸機制,但也有點象Server.Transfer,目標網頁也可以訪問源網頁的數據。為了使用跨網頁提交,我們需要在源網頁中的PostBackUrl屬性中指定目標URL。
? ? ? 這部分將討論一下如何在ASP.NET2.0中實現跨網頁提交。為了開始我們的學習,假設有兩個Web頁,一個是源Web頁,另一個是目標Web頁。在源網頁中初始化了使用按鈕進行的跨網頁提交操作。我們首先必須設置目標網頁按鈕的PostBackUrl屬性,順便說一句,所有實現了System.Web.UI.WebControls.IbuttonControl接口的Web控件都有跨網頁提交的特性。下面的代碼將演示這一過程。
PostBackUrl="~/target.aspx" text = "Post to a target page"/>?
當我們設置PostBackUrl屬性時,ASP.NET框架將相應的控件綁定到一個新的叫WebForm_DoPostBackWithOptions的JavaScript函數,產生的Html代碼如下:
οnclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("btnSubmit", "", false, "","Target.aspx", false, false))" id="btnSubmit" />
對于上面的html代碼來說,當用戶單擊按鈕時,瀏覽器將提交目標URL(Target.aspx),而不是源URL。
轉載于:https://www.cnblogs.com/gongyu/p/3975264.html
總結
- 上一篇: 『Golang』Martini框架入门
- 下一篇: bzoj3715 [PA2014]Lus