亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

了解ASP2.0向其它網頁傳遞信息的方法

2024-05-04 11:06:37
字體:
來源:轉載
供稿:網友
注冊會員,創建你的web開發資料庫,

標準html表單(form元素)允許你向另外一個頁面或者應用程序傳遞和發送數據信息,方法是使用表單元素。在asp.net 1.x中,網頁則利用投遞機制,把頁面數據提交給該頁本身。對于asp.net 2.0,它的功能有所擴展,能夠允許跨頁提交。這周就讓我們來探討這個新特性。

傳統辦法

為了便于比較,我想花一分鐘來回顧網頁傳遞數據的老方法。html的表格元素有一個action(動作)屬性,用來指定服務器端哪項資源(所謂資源,是指一個網頁、一段腳本、程序等)來處理這些提交的數據。下面的代碼便是一個樣例。

<html>

<head><title>sample html form</title></head>

<body>

<form name="frmsample" method="post" action="target_url">

<input type="text" name="fullname" id="fullname" />

<input type="button" name="submit" value="submit" />

</form>

</body></html>

在文本域(名字是fullname)中輸入的值將被提交給表單元素的action屬性指定的頁面或者程序。對于asp.net開發者,即使曾經用過標準html表單,也是極不多見的。

asp.net開發者面對要從一個網頁向另一個網頁傳遞數據信息的任務時,方法選擇的余地是異常廣闊的。它們包括會話變量(session variables)、cookies、querystring 變量、caching(網頁緩存),甚至server.transfer方法,但是asp.net 2.0還提供了另外一種選擇。

asp.net 2.0提供的又一辦法

在設計asp.net 2.0的時候,微軟認識到了在網頁間交叉傳遞數據的需求。有了這個意識之后,就為asp.net的button(按鈕)控件增加了一項postbackurl屬性。它允許你在用戶提交的時候,指明這張表單和上面的數據送往何方(也就是由postbackurl屬性指定的url值確定)。一般來講,跨頁傳遞是客戶端在后臺使用javascript進行傳送的過程。

<%@ page language="vb" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html><head>
<title>cross postback example</title>
</head><body>
<form id="frmcrosspostback1" method="post" runat="server">
<asp:label id="lblname" runat="server" text="name:"></asp:label>
<asp:textbox id="txtname" runat="server"></asp:textbox><br />
<asp:label id="lble-mailaddress" runat="server" text="e-mail:"></asp:label>
<asp:textbox id="txte-mailaddress" runat="server"></asp:textbox><br />
<asp:button id="btnsubmit" runat="server" text="submit" postbackurl="crosspostback2.aspx" />
</form></body></html>

中的asp.net頁面擁有兩個文本域(分別表示name(名字)和e-mail(電子郵件)),以及一個用來提交數據的button(按鈕)。這個提交按鈕的postbackurl屬性被指定為另外一個網頁,這樣使得表單提交的時候,數據可以發送到那個頁面。注意:這個例子中,表單元素通過設置method(方法)屬性,讓表單提交時采用post[2]提交方式,但這不是必要的,因為所有cross postback(跨頁投遞)根據設計均使用post方法。

使用先前頁面

asp.net頁面經由跨頁投遞的調用而載入的時候,它上面的對象的ispostback屬性不會被觸發。不過,有一項叫做previouspage(前一頁)的屬性使你能夠訪問和使用那些應用跨頁投遞的頁面。

每當一個跨頁請求發生時,當前頁的previouspage屬性就把促發投遞的頁面引用保存下來。如果頁面的產生不是來自跨頁投遞的激發,或者說頁面處于不同的程序組,那么previouspage屬性將不會被初始化。

你可以通過檢查previouspage對象來確定頁面的載入是否為跨頁投遞的結果。值如果為null,則說明是普通的載入,而非null值則表明網頁來自跨頁投遞。此外,頁面類(page class)還包含了一個稱作iscrosspagepostback的方法(method),專門用來確定頁面是不是跨頁投遞的結果。

一旦確定發生了跨頁投遞,你就可以通過previouspage對象的findcontrol方法去訪問調用頁(calling page)上的控件。下面的代碼是我們例子中的第二頁;它由前面列出的頁面所調用。

<%@ page language="vb" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html><head>
<title>cross postback example 2</title>
</head><body>
<script language="vb" runat="server">
sub page_load()
if not (page.previouspage is nothing) then
if not (page.iscrosspagepostback) then
response.write("name:" + ctype(previouspage.findcontrol("txtname"), textbox).text + "<br>")
response.write("e-mail:" + ctype(previouspage.findcontrol("txte-mailaddress"), textbox).text + "<br>")
end if
end if
end sub
</script></body></html>

這個頁先判斷它是不是由跨頁投遞所調用。如果是,就通過findcontrol方法訪問來自調用頁的數值,并把用此方法得到的控件轉換為textbox控件,然后顯示它們的text(文本)屬性的內容。

你可以把整個previouspage對象轉換成觸發跨頁投遞的頁面類型。這個方法允許你訪問頁面的全局屬性(public properties)和方法。在我給出這項技術的實例之前,我有必要重寫第一個例子,包含進一些全局屬性。下面代碼是添加了兩個屬性的第一個清單,這兩個屬性用于訪問域值。

<%@ page language="vb" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html><head>
<title>cross postback example</title>
<script language="vb" runat="server">
public readonly property name
get
return me.txtname.text
end get
end property
public readonly property e-mailaddress
get
return me.txte-mailaddress.text
end get
end property
</script></head><body>
<form id="frmcrosspostback1" method="post" runat="server">
<asp:label id="lblname" runat="server" text="name:"></asp:label>
<asp:textbox id="txtname" runat="server"></asp:textbox><br />
<asp:label id="lble-mailaddress" runat="server" text="e-mail:"></asp:label>
<asp:textbox id="txte-mailaddress" runat="server"></asp:textbox><br />
<asp:button id="btnsubmit" runat="server" text="submit" postbackurl="crosspostback2.aspx" />
</form></body></html>

既然現在屬性已經建好,那你就能很容易訪問它們。要警惕的是,page類的previouspage對象必須轉換成正確的類型,這樣才能正確訪問它的屬性。這可以通過把它轉換成合適的page類別的對象加以實現。

<%@ page language="vb"%>
<%@ reference page="~/crosspostback1.aspx" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html><head>
<title>cross postback example 3</title>
</head><body>
<script language="vb" runat="server">
sub page_load()
dim cpppage as crosspostback1_aspx
if not (page.previouspage is nothing) then
if not (page.iscrosspagepostback) then
if (page.previouspage.isvalid) then
cpppage = ctype(previouspage, crosspostback1_aspx)
response.write("name:" + cpppage.name + "<br>")
response.write("e-mail:" + cpppage.e-mailaddress)
end if
end if
end if
end sub
</script></body></html>

說明了這一點,它在頁面頭部定義了調用頁的一項引用,那樣這個引用類型就能在代碼中使用。通過這項引用,實際的vb.net代碼使用ctype函數把previouspage對象轉換成了適當的類型。這之后,那些屬性就可以像代碼示范的那樣使用了。

關于上述清單中previouspage對象isvalid方法的使用在此提醒一下:前頁的isvalid屬性保證你對它操作之前,它已通過所有合法驗證測試。

總結

在網頁間傳遞數據參數有很多項應用,包括保持個人用戶信息。祖傳的網頁解決方案,像使用querystring和cookies,允許你很容易當提交發生時從一個頁面指向另一個頁面。

asp.net 1.1除了提供額外方法外,對這些方法也能很好地支持,可是,asp.net 2.0依靠跨頁投遞,使這方面又有了長足發展。它讓一個網頁處理來自另一網頁的數據變得簡單。在你開發你的下一個asp.net 2.0程序的時候,可要好好利用這個新概念的優勢啊。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久东京| 日韩资源在线观看| 欧美在线视频导航| 亚洲人精选亚洲人成在线| 深夜福利91大全| 欧洲亚洲免费在线| 国产99久久精品一区二区 夜夜躁日日躁| 伊人久久五月天| 亚洲一区二区久久久久久久| 91免费高清视频| 久久人人爽国产| 国产精品欧美久久久| 久久久久久美女| 欧美劲爆第一页| 中文字幕免费精品一区高清| 国产日韩欧美在线播放| 中文在线资源观看视频网站免费不卡| 亚洲成人网av| 日韩电视剧在线观看免费网站| 久久久人成影片一区二区三区| 亚洲成年网站在线观看| 国产欧美va欧美va香蕉在线| 色综合视频网站| 日韩中文在线视频| 亚洲伊人久久大香线蕉av| 日韩专区在线播放| 韩国三级电影久久久久久| 色妞一区二区三区| 91精品视频网站| 色偷偷亚洲男人天堂| 久久免费精品日本久久中文字幕| 日韩免费精品视频| 欧美在线视频在线播放完整版免费观看| 一区二区成人av| 国产一区二区三区在线| 亚洲xxxx妇黄裸体| 26uuu亚洲伊人春色| 久久精品视频亚洲| 国产女人18毛片水18精品| 国产成人亚洲综合91| 美日韩在线视频| 国产一区二区在线免费| 91亚洲精品一区二区| 在线视频国产日韩| 91理论片午午论夜理片久久| 久久久这里只有精品视频| 91精品国产沙发| 亚洲成人黄色网| 久久不射热爱视频精品| 久久中文字幕一区| 亚洲综合色av| 中文字幕欧美精品在线| 日韩午夜在线视频| 国产精品丝袜高跟| 奇米成人av国产一区二区三区| 欧美日韩国产色| 亚洲最新av在线网站| 日韩欧美在线观看| 97在线日本国产| 国产精品精品一区二区三区午夜版| 欧美激情欧美狂野欧美精品| 国产一区二区三区在线播放免费观看| 91亚洲精品在线| 欧洲一区二区视频| 欧美网站在线观看| 国产视频精品在线| 深夜成人在线观看| 日韩精品免费综合视频在线播放| 国产精品扒开腿做爽爽爽视频| 日韩亚洲欧美中文高清在线| 色老头一区二区三区在线观看| 国产福利精品在线| 久久91超碰青草是什么| 国产成人精品999| 欧美精品久久久久久久久久| 国产69久久精品成人| 日韩免费在线播放| 欧美精品激情视频| 国产精品免费在线免费| 欧美午夜丰满在线18影院| 97精品国产97久久久久久春色| 欧美日韩免费区域视频在线观看| 激情成人在线视频| 欧美极品少妇与黑人| 久久成人综合视频| 成人福利在线视频| 国产精品久久久久久久久久久久久| 日韩欧美国产成人| 91精品免费视频| 欧美精品videos| 91高清在线免费观看| 欧美特黄级在线| 亚洲精品久久久久久久久久久| 91精品久久久久久久久| 伊人成人开心激情综合网| 日韩在线观看免费全集电视剧网站| 亚洲天堂色网站| 7777精品久久久久久| 97在线视频免费观看| 欧美另类交人妖| 精品国产自在精品国产浪潮| 日韩www在线| 欧美在线视频在线播放完整版免费观看| 日本精品免费一区二区三区| 欧美激情第一页xxx| 国产一区二区三区欧美| 亚洲黄页视频免费观看| 国产一区二区黄| 成人在线激情视频| 欧美日韩国产专区| 亚洲国产日韩一区| 欧美小视频在线| 亚洲精品不卡在线| 久久综合亚洲社区| 日本亚洲欧美三级| 成人a在线观看| 97人人爽人人喊人人模波多| 久久综合88中文色鬼| 欧美黄色小视频| 日韩中文av在线| 久久久久久国产精品久久| 国产精品入口福利| 日韩中文字幕视频在线观看| 国产精品福利在线| 91精品综合久久久久久五月天| 亚洲精品欧美日韩专区| 久久久久久久久中文字幕| 欧美最猛性xxxxx免费| 久久久久免费精品国产| 久久天天躁狠狠躁夜夜躁| 久久久久久91香蕉国产| 亚洲国产精品成人av| 爱福利视频一区| 亚洲综合中文字幕在线| 国产成人精品视| 91国自产精品中文字幕亚洲| 永久免费看mv网站入口亚洲| 日本一区二三区好的精华液| 久久天天躁狠狠躁夜夜av| 国产精品久久久久aaaa九色| 日韩电影大全免费观看2023年上| 久久这里有精品| 欧美激情三级免费| 亚洲综合中文字幕在线观看| 国产精品久久久久久久久免费| 日韩av理论片| 欧美美女15p| 国产精品美女久久久久av超清| 亚洲欧美精品伊人久久| 国产精品久久久久9999| 国产亚洲精品高潮| 丰满岳妇乱一区二区三区| 色999日韩欧美国产| 国产成人精品久久亚洲高清不卡| 亚洲成人激情视频| 欧美在线性视频| 久久成人一区二区| 久久久久北条麻妃免费看| 亚洲精品久久久久久久久久久| 亚洲综合中文字幕在线| 亚洲自拍偷拍色片视频| xxxxxxxxx欧美| 国产精品69久久久久| 在线性视频日韩欧美|