導航:首頁 > 配伺服器 > 伺服器端不同頁面之間怎麼傳值

伺服器端不同頁面之間怎麼傳值

發布時間:2022-08-29 20:21:56

⑴ 列舉ASP.NET 頁面之間傳遞值的幾種方式

1、使用QueryString變數

QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。但是對於傳遞數組或對象的話,就不能用這個方法了。下面是一個例子:

a.aspx的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、Session傳值

這種方法將每份數據存儲於伺服器變數中,可以傳遞比較多的數據,並且安全性較高,所以常用於用戶身份的驗證功能中。不過,Session變數如果存儲過多的數據會消耗過多的伺服器資源,編程者在使用時應該慎重,其使用方法如以下代碼所示。

Session["SessionValue"] = 「ATI」;

//也可以用索引存儲

Session[0] = 「ATI」;

//在其他頁面的伺服器端方法中取值方式為:

string str = Session["SessionValue"].ToString();

//也可以用索引獲取

string str = Session[0].ToString();

Session的可在應用程序的多個頁面中以名稱/值對的方式共享,直到瀏覽用戶關閉自己的瀏覽器或者伺服器Session超時(可設置,默認為20分鍾)。

3、<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

一個帶有runat="server"的控制項才是後台.cs能夠獲得到的,唯一標識符是ID,通過ID獲取,大寫可以和html的id區別開來好看(雖然這個ID可以寫成id);asp.net自帶的控制項runat="server"必須寫。

因為其實TextBox控制項在瀏覽器源碼查看中也是input,但是如果不加runat="server"聲明它是asp.net伺服器控制項,不會被解析成input給瀏覽器認識,瀏覽器變成文本框等等展現出來。

(1)伺服器端不同頁面之間怎麼傳值擴展閱讀:

使用Cookie對象變數

這個也是大家常使用之方法,與Session一樣,其是什對每一個用戶而言之,但是有個本質之區別,即Cookie是存放在客戶端之,而session是存放在伺服器端之。而且Cookie之使用要配合ASP.NET內置對象Request來使用。

a.aspx之C#代碼

private void Button1_Click(object sender, System.EventArgs e)

{

HttpCookie cookie_name = new HttpCookie("name");

cookie_name.Value = Label1.Text;

Reponse.AppendCookie(cookie_name);

Server.Transfer("b.aspx");

}

b.aspx中C#代碼

private void Page_Load(object sender, EventArgs e)

{

string name;

name = Request.Cookie["name"].Value.ToString();

}

⑵ 四種跨頁面傳值方式有何差異,各自使用於什麼情況

不同的頁面間傳值使用很普遍,非常重要,傳值方式有四種分別是cookie,session,sendRedirect和超鏈接,隱藏表單
1.cookie主要用於記錄用戶的一些信息,例如記錄用戶的登錄信息使用戶一段時間內不用登錄,它有伺服器創建,並放在客戶端(用戶登錄時的電腦上(一般可以在瀏覽器工具——》Internet選項——》點擊第一個設置——》查看文件在這里可以找到上網的記錄,包括一些小的視頻和cookie,從這一點來看cookie並不安全,可以在cookie看到密碼)),當使用時,伺服器就會從電腦上獲取,然後驗證,一個用戶有一個cookie,而且cookie的存在時間不受任何影響,關機都不會影響cookie。
2.session是存放在伺服器端的數據,每當雙擊打開瀏覽器時就會有一個session,也就是說每一個瀏覽器一個session,session的使用時間是受使用影響的,當關機時候session就不會再存在,當session沒有到期時如果使用,session就會重新計時。可以用於判斷用戶的合法(是否通過用戶名,密碼登陸的),傳遞用戶名(sendRedirect是明文傳值,值會再地址欄顯示出來,不能用於傳重要數據,例如密碼),jsp頁面的session與servlet中的session是共用的。
3.sendRedirect或超鏈接是轉向某頁面並可以傳值例如res.sendRedirect("logincl?username="+name1+"&psw="+pass1);在轉向的頁面通過下面的語句獲取值
String u = req.getParameter("username");String p = req.getParameter("psw");
超級鏈接:("<a href=welcome?pagenow=" + i + ">" + i+ "</a>");
接收值:String pagenow = req.getParameter("pagenow");
可以用於傳錯誤信息等保密性不是很強的信息
4.隱藏表單
pw.println("<input type=hidden name=sex value=男<br>");
在轉向的頁面可以用下面的語句接收
String s=req.getParameter("sex");

⑶ 如何在頁面和伺服器間傳值

樓主說的是怎麼在頁面和伺服器之間傳值,一個個都說ajax,是,沒錯,你們都學過很長時間的web編程了,用ajax進行非同步通信貌似很火,但是樓主很顯然是說基礎的傳值,你們這樣不就是顯擺么?

lymeng520更搞笑,到網上摘了點ajax只是就來答題了!!

既然樓主是來java板塊,那麼我說下jsp,servlet等基礎傳值方法。

比如你的一個頁面(html,jsp啊什麼的)上要在人點擊一個按鈕之後將輸入的信息傳給後台,那麼首先要一個表單Form.如<form id="xxx" name="xxx" action="action.jsp">這個意思就是後台處理程序是action.jsp這個文件,當然了,也可以是servlet。用一個form包含一個提交按鈕,那麼點擊這個按鈕之後就會自動將他所屬於的form提交。
如:
<form id="xxx" name="xxx" action="action.jsp">
<!-- 這里放一些你的信息輸入欄,比如輸入名字啊什麼的-->
<input type="text" name="userName" id="userName"><!--這里要用戶輸入一些名字信息-->
<input type="submit" value="提交">
</form>
這就是一個最最基礎的傳值給後台的代碼片段。
你在action.jsp中就可以用request.getParameter("userName");來獲取別人填寫的名字信息.userName就是指<input type="text" name="userName" id="userName">中的name屬性的值,用request.getParameter("userName");就是獲得了這個文本框內的東西了。

另一種常見方式就是session之間傳值,比如你一個jsp頁面中來個session.setAttribute("a",new String("aaa")),那麼當這個jsp頁面提交給後台處理程序(可能是一個jsp或一個servlet程序),那麼再後台程序裡面就可以用String aa=session.getAttribute("a").toString();來將之前那個Jsp頁面中所設定的屬性a的值"aaa"獲取並賦給後台程序中定義的變數aa中。

當然,以上都是很基礎的傳遞方式,樓主會了這些再看看ajax來進行非同步通信那樣才好些,如果什麼都還不會就直接搞ajax那樣不好。

⑷ 關於asp.net不同頁面傳遞數值的問題

傳值問題的話,可以參照:
跨頁面傳值:
一.使用QueryString變數傳值:該變數用於傳送一個或多個安全性不高或結構簡單的數組。
例如:a.aspx:
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="a6.aspx.cs" Inherits="a6aspx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</div>
</form>
</body>
</html>
後台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class a6aspx : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string url;
url = "b6.aspx?name="+TextBox1.Text;
Response.Redirect(url);
}
}
b.aspx:
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="b6.aspx.cs" Inherits="b6" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
後台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class b6 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text=Request.QueryString["name"];
}
}
二.使用application變數,作用范圍是整個全局,對所有用戶都有效
Application用來保存所有用戶共用的信息
在Asp時代,如果要保存的數據在應用程序生存期內不會或者很少發生改變,那麼使用Application是理想的選擇。但是在Asp.net開發環境中我們把類似的配置數據放在Web.config中。
如果要使用Application 要注意的是所有的寫操作都要在Application_OnStart事件中完成(global.Asax),盡管可以使用Application.Lock()避免了沖突,但是它串列化了對Application的請求,會產生嚴重的性能瓶頸。
不要使用Application保存大數據量信息
代碼:Application[「UserID」]=」test」;
String UserName=Application[「UserID」].ToString();
三.使用session變數:作用於用戶個人,易導致伺服器內存耗盡。
Session用來保存每一個用戶的專有信息
Session的生存期是用戶持續請求時間加上一段時間(一般是20分鍾左右)
Session信息是保存在Web伺服器內存中的,保存數據量可大可小
Session超時或者被關閉將自動釋放數據信息
由於用戶停止使用應用程序之後它仍在內存中存留一段時間,因此這種方法效率較低
代碼:Session[「UserID」]=」test」;
String UserName=Session[「UserID」].ToString();
四.使用cookie變數:須配合request來使用。
Cookie用來保存客戶瀏覽器請求伺服器頁面的請求信息
我們可以存放非敏感的用戶信息,保存時間可以根據需要設置
如果沒有設置Cookie失效日期,它的生命周期保存到關閉瀏覽器為止
Cookie對象的Expires屬性設置為MinValue表示永不過期
Cookie存儲的數據量受限制,大多數的瀏覽器為4K因此不要存放大數據
由於並非所有的瀏覽器都支持Cookie,數據將以明文的形式保存在客戶端
代碼:Resopnse.Cookies[「UserID」]=」test」;
String UserName= Resopnse.Cookies [「UserID」].ToString();
五.使用server.transfer方法傳值:使用該方法將流程從當前頁面引導到另一頁面中,新頁面使用前一頁面的應用流。
六.使用Post方法傳值:易出現傳送的參數缺少存儲,刷新B頁面時導致A頁面傳送過來的內容丟失,出現「未將對象引用設置成對象的實例」的錯誤。
七.使用@PreviousPageType:(可隱藏Url中的參數)
該指令是.net 2.0中的一個新指令,用於處理asp.net 2.0 提供的跨頁面傳送功能,用於批定跨頁面的傳送過程起始於哪個頁面。
TypeName:設置回送時的派生類名;
VirtualPath:設置回送時所傳送的頁面的地址;
八.表單提交:
九.PostbackUrl:在.net中僅有button linkbutton imgbutton有postbackurl可用來跨頁面傳值。
十.靜態屬性傳值:通過繼承類實現調用其他類的方法。
public static int aaa;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
aaa = 123;
Response.Redirect("static_b.aspx");
}
。。。。。。。。。
public partial class b4 : a4
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = a4.aaa.ToString();
}
}
本頁面傳值:
一.cache傳值:
Cache用於在Http請求期間保存頁面或者數據
Cache的使用可以大大的提高整個應用程序的效率
它允許將頻繁訪問的伺服器資源存儲在內存中,當用戶發出相同的請求後
伺服器不是再次處理而是將Cache中保存的數據直接返回給用戶
可以看出Cache節省的是時間—伺服器處理時間
Cache實例是每一個應用程序專有的,其生命周期==該應用程序周期
應用程序重啟將重新創建其實例
注意:如果要使用緩存的清理、到期管理、依賴項等功能必須使用Insert 或者Add方法方法添加信息
代碼:Cache[『」ID」]=」yiner」;或者Cache.Insert(「ID」,」test」);
String ID =Cache[「ID」].ToString();
二.ViewState傳值:
ViewState用來保存用戶的狀態信息,有效期等於頁面的生命周期
可以保存大量數據但是要慎用,因為會影響程序性能
所有的Web伺服器控制項都是用ViewState在頁面PostBack期間保存狀態
不需要則關閉@page 裡面設置EnableViewState=false
代碼:ViewState[『」ID」]=」yiner」;
String ID =ViewState[「ID」].ToString();
三.Hidden傳值:
Hidden控制項屬於Html類型的伺服器控制項,始終處於隱藏狀態
每一次提交的時候它會和其他伺服器控制項一起提交到伺服器端
代碼如下:Hidden.Value=」king」;
string id=Hidden.Value; 要使用Runat=server
如果功能問題,及時聯系,幫你解決。。。。。。

如果是其他問題,隨時聯系我,樂意解決。。。。。。

⑸ 如何在頁面之間傳遞變數

(1)Session
(2)Cookie
(3)Application
(4)URL地址中的參數
(5)通過隱藏欄位來傳遞數據
(6)Server.Transfer
(7)通過序列化對象
(8)........

下面就分別一一介紹:
(1)使用Session
session對象是用來記錄瀏覽器端的變數,是個別瀏覽器端專用的變數,對於每一個瀏覽器訪問時都會自動產生一個seseion對象,該對象提供一個存儲場所,用來存儲僅僅對該訪問者在會話的活動期間打開的網頁可用的變數和對象。這樣就用可以用來在Web間傳遞專對單個瀏覽器端使用的數據。其定義方法:session(「變數名」)=數值

如:Session["testTransmitVaraint"] = "testSession";

session對象所定義的變數只是瀏覽器端的專用變數,所以適用於局部會話間的網頁數據傳遞。

(2)使用Cookie
cookie是在瀏覽頁面時Web伺服器在瀏覽器端所寫入的一些小文件,cookie是存放在瀏覽器端本機磁碟上,而不是存放在服務端的。可以在發送數據時寫入cookie,接收時讀取cookie完成數據在Web頁面間的傳送。

發送頁面
HttpCookie cookie = new HttpCookie("testCookie");
cookie.Value = TextBox1.Text;
Response.SetCookie(cookie);

取Cookie頁
HttpCookie cookie = Request.Cookies["testCookie"];
Response.Write("<br>HttpCookie = " + cookie.Value);

(3)使用Application
application對象是用來記錄整個網站信息的,是記錄不同瀏覽器端共享的變數,無論有幾個瀏覽者同時存取網頁,都只會產生一個application對象實例。用戶可以通過定義application整站共享變數來實現網頁間的數據傳遞。其定義方法是:application(「變數名」)=數值

如:Application["testApplication"] = "testApplication";

application對象所定義的變數對於所有瀏覽端都是可見的,所以其使用場合是所有瀏覽端共享的全局數據傳遞。

(4)使用URL地址中的參數
URL方式是實現Web間數據傳遞最基本的方法,操作簡單,可很方便地實現不同Web頁面間的數據傳遞,但其安全性比較差。將要傳遞的數據附加在網頁地址(URL)後面進行傳遞。如:http://192.168.0.1/testweb.aspx?username=liming,其中?後面所跟著的字元串便是傳遞的數據,=前的是變數名,=後面是數值,可以使用request對象來獲取傳遞的數據。如:request(「username」)。這種方法在傳遞數據過程中其數據內容在URL欄中是顯示的,用戶能看到提交的內容。

以上四種方法的適用范圍:簡單變數如基本的數據類型的數據

(5)使用隱藏欄位來傳遞數據
通過在網頁上製作表單交互區域,用戶在瀏覽器端輸入數據,然後通過form提交到伺服器,在提交後的接受form數據的頁面里就可以接收到相應數據,即form的action頁面中可以使用request對象來接收所傳遞的數據。

如:

發送頁面:

}

接收頁面:request(「UserID」)

利用form頁面的文本框來接收用戶數據的輸入,通過submit按鈕提交後在targetweb頁面中使用request來接收數據。

適用范圍:基本的數據類型的數據,不宜傳遞對象變數等復雜的數據

(6)使用Server.Transfer
這個方法稍微復雜一點,但在頁面間值傳遞中卻是特別有用的,使用該方法你可以在另一個頁面以對象屬性的方式來存取顯露的值,當然了,使用這種方法,你需要額外寫一些代碼以創建一些屬性以便可以在另一個頁面訪問它,但是,這個方式帶來的好處也是顯而易見的。總體來說,使用這種方法是簡潔的同時又是面向對象的。
使用這種方法的整個過程如下:
1,在頁面里添加必要的控制項
2,創建返回值的Get屬性過程
3,創建可以返回表單的按鈕和鏈接按鈕
4,在按鈕單擊事件處理程序中調用Server.Transfer方法轉移到指定的頁面
5,在第二個頁面中,我們就可以使用Context.Handler屬性來獲得前一個頁面實例對象的引用,通過它,就可以使用存取前一個頁面的控制項的值了
此方法的適用范圍:簡單變數如基本的數據類型的數據,復雜變數如結構、類變數、DataSet、DataTable等
具體的事例,請見原代碼。

此方法的適用范圍:簡單變數如基本的數據類型的數據,復雜變數如結構、類變數、DataSet、DataTable等

(7)通過序列化對象
序列化是指將對象實例的狀態存儲到存儲媒體的過程。在此過程中,先將對象的公共欄位和私有欄位以及類的名稱(包括類所在的程序集)轉換為位元組流,然後再把位元組流寫入數據流。在隨後對對象進行反序列化時,將創建出與原對象完全相同的副本。
在面向對象的環境中實現序列化機制時,必須在易用性和靈活性之間進行一些權衡。只要您對此過程有足夠的控制能力,就可以使該過程在很大程度上自動進行。例如,簡單的二進制序列化不能滿足需要,或者,由於特定原因需要確定類中那些欄位需要序列化。
為什麼要使用序列化?最重要的兩個原因是:將對象的狀態保存在存儲媒體中以便可以在以後重新創建出完全相同的副本;按值將對象從一個應用程序域發送至另一個應用程序域。例如,序列化可用於在ASP.NET 中保存會話狀態,以及將對象復制到 Windows 窗體的剪貼板中。它還可用於按值將對象從一個應用程序域遠程傳遞至另一個應用程序域。
關於序列化對象更詳細的介紹,請參見微軟的「.NET 中的對象序列化」

(8)結束語
上述介紹的是網頁間數據傳遞的常用方法,各有千秋。其中URL方式和form方式實現方法簡單,可實現網頁間的簡單數據傳遞,一般為字元串類型,其特點是安全性差,而且必須是連續訪問兩頁面間數據傳遞。Cookie只能存放string類型的數據,如果想要存放更為復雜的數據類型,那麼必須先將其轉換為string類型。Application對象和Session對象操作相對復雜些,瀏覽量非常大的網頁使用時應適量,而且使用結束後盡量清除,否則大量使用有可能會導致伺服器的癱瘓。Session變數的安全性較高,可傳遞專用瀏覽端數據。具體應用決定了數據傳遞方式的選擇,合理數據傳遞方式選擇是Web頁面的設計中的關鍵考慮因素。

⑹ 兩個HTML頁面如何傳遞數據

一.通過表單簡單的傳輸數據,利用js代碼接收傳遞的數據,注意method屬性要設為get。
<form id="form" action="data.html" method="get"></form>//action的值是你的目的html
在你的目的html中可通過url接收傳遞的數據,並將數據保存在一個對象中。
<script type="text/javascript" charset="utf-8">
window.onload = function() {
var url = window.location.search;//location.search是從當前URL的?號開始的字元串
console.log(url);
var Request = new Object();
if (url.indexOf('?') != -1) {
var a = '';
var str = url.substr(1) //去掉?號
strs = str.split('&');
for (var i = 0; i < strs.length; i++) {
a = strs[i].split('=')[0];
Request[a] = decodeURI(strs[i].split('=')[1]);//解碼,生成獲取信息的對象
console.log(Request[a]);
}
}
console.log(Request);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
注意這種方式傳遞中文數據需要用decodeURIComponent()或decodeURL()函數解碼,unescape()現在似乎已經淘汰了。
然後利用document.write()或innerHTML等方法或函數將數據顯示在網頁上。此種方法適合自己平時寫JS的小練習,此種方法無法將數據保存下來。

2.使用Cookie傳遞參數
下面是簡單的實例,a頁面保存Cookie,b頁面讀取。
a.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>a</title>
<script type="text/javascript">
/***
* @param {string} cookieName Cookie名稱
* @param {string} cookieValue Cookie值
*/
function SetCookie(cookieName,cookieValue) {
/*設置Cookie值*/
document.cookie = cookieName + "=" + escape(cookieValue)
}
function login() {
var username = $("user").value;
if(username.length>0 && username) {
SetCookie("username", username);
/*跳轉到b.html頁面*/
document.location = "b.html";
}
}
function $(id) {
return document.getElementById(id);
}
</script>
</head>
<body>
<div id="main">
<div><span>請輸入你的名字</span><input type="text" id="user" /></div>
<div>
<input type="button" onclick="login()" value="提交" />
</div>
</div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
b.html

<html>
<head>
<meta charset="UTF-8">
<title>b</title>
<script type="text/javascript">
/***
*讀取指定的Cookie值
*@param {string} cookieName Cookie名稱
*/

function ReadCookie(cookie_name){
//判斷是否存在cookie
if (document.cookie.length > 0){
//查詢cookie開始部分
cookie_start = document.cookie.indexOf(cookie_name + "=")
//如果存在
if (cookie_start != -1){
//計算結束部分
cookie_start = cookie_start + cookie_name.length + 1
cookie_end = document.cookie.indexOf(";", cookie_start)
//如果已經是最後一個cookie值,則取cookie長度
if (cookie_end == -1) {
cookie_end = document.cookie.length
}
//獲取cookie值,unescape對特殊字元解密
return unescape(document.cookie.substring(cookie_start,cookie_end))
}
}
//其它情況返回空
return ""
}

function $(id) {
return document.getElementById(id);
}

function init() {
var username = ReadCookie("username");
if(username && username.length>0) {
$("msg").innerHTML = "<h1>歡迎光臨," + username + "!</h1>";
} else {
$("msg").innerHTML = "<a href='a.htm'>請錄入名字</a>";
}
}
</script>
</head>
<body onload="init()">
<div id="msg"></div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
此種方法也是適合自己平時寫JS的小練習,此種方法無法將數據保存下來。

3.通過web伺服器利用前後端交互
前後端交互又可分為表單交互和url參數交互。表單交互是指在HTML中創建一個表單,用戶填寫表單後提交給伺服器,伺服器收到表單後返回處理結果。其大致構成如下:
URL參數經常用於瀏覽器向伺服器提交一些請求信息。其流程圖大致如下:
例如利用nodejs與json文件相連接,實現對本地json數據的增刪改查,在不同網頁間傳遞數據。
————————————————
版權聲明:本文為CSDN博主「想躺」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41209003/article/details/103739371

⑺ 如何通過javascript在兩個頁面之間傳值

第一個頁面中有兩個圖片,當點擊的時候能在第二個頁面中獲得它的屬性值()通過js進行傳值:
第一個頁面:

[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
<script type="text/javascript">
function test(){

var img1= document.getElementById("img1");
var img2= document.getElementById("img2");
//獲得alt的屬性
var parm1=img1.getAttribute("alt");
var parm2=img2.getAttribute("alt");
//url

img1.onclick=function(){
var myurl="test2.html"+"?"+"parm1="+parm1;
window.location.assign(myurl);
}

img2.onclick=function(){
var myurl="test2.html"+"?"+"parm2="+parm2;
window.location.assign(myurl);
}

}
</script>
</head>

<body onload="test();">
<img src="1.jpg" id="img1" alt="myimg1">
<img src="2.jpg" id="img2" alt="myimg2">

</body>

</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
<script type="text/javascript">
function test(){

var img1= document.getElementById("img1");
var img2= document.getElementById("img2");
//獲得alt的屬性
var parm1=img1.getAttribute("alt");
var parm2=img2.getAttribute("alt");
//url

img1.onclick=function(){
var myurl="test2.html"+"?"+"parm1="+parm1;
window.location.assign(myurl);
}

img2.onclick=function(){
var myurl="test2.html"+"?"+"parm2="+parm2;
window.location.assign(myurl);
}

}
</script>
</head>
<body onload="test();">
<img src="1.jpg" id="img1" alt="myimg1">
<img src="2.jpg" id="img2" alt="myimg2">
</body>

</html>

第二個頁面:
[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test2</title>

<script type="text/javascript">
function getvalue()
{

///test2.html?parm1=myimg1&parm2=myimg2
//獲得第一個屬性
var url=location.href;
var tmp1=url.split("?")[1];
var tmp2=tmp1.split("&")[0];
var tmp3=tmp2.split("=")[1];
var parm1=tmp3;
//獲得第二個屬性
/*
var tmp9=url.split("?")[1];
var tmp4=tmp9.split("&")[1];
var tmp5=tmp4.split("=")[1];
var parm2=tmp5;
*/
var inhtml= document.getElementById("inhtml");
inhtml.innerHTML=parm1;
//alert(parm1);
}
</script>

</head>

<body onload="getvalue();">

<h2>測試</h2>
<span id="inhtml"> </span>

</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test2</title>

<script type="text/javascript">
function getvalue()
{
///test2.html?parm1=myimg1&parm2=myimg2
//獲得第一個屬性
var url=location.href;
var tmp1=url.split("?")[1];
var tmp2=tmp1.split("&")[0];
var tmp3=tmp2.split("=")[1];
var parm1=tmp3;
//獲得第二個屬性
/*
var tmp9=url.split("?")[1];
var tmp4=tmp9.split("&")[1];
var tmp5=tmp4.split("=")[1];
var parm2=tmp5;
*/
var inhtml= document.getElementById("inhtml");
inhtml.innerHTML=parm1;
//alert(parm1);
}
</script>
</head>
<body onload="getvalue();">
<h2>測試</h2>
<span id="inhtml"> </span>
</body>
</html>

⑻ ASP.NET頁面之間傳遞值的幾種方式

URL、Session、Cookies、Server.Transfer、Application和跨頁面傳送。
【分析】
本題考查面試者對ASP.NET中多頁面傳值的理解是否全面。因為ASP.NET的頁面表單提交到自身,完成回傳的功能,所以默認情況下不能使用POST方式進行多頁面傳值。關於這些傳值方式的分析如下所示。
1.URL傳值
這是經典的傳值方式,這種方法的使用非常簡單,不過所傳遞的值是會顯示在瀏覽器的地址欄上的,而且不能傳遞對象。所以這種方法一般用於傳遞的值少且安全性要求不高的情況下。在*.aspx頁面開發中可以使用超級鏈接文本進行傳值,如以下代碼所示。
<asp:HyperLink runat="server" ID="HpLink"
NavigateUrl="~/GetValues.aspx?urlvalue1=intel&urlvalue2=amd">URL傳值</asp:HyperLink>
以上鏈接文本將頁面跳轉到GetValues.aspx頁面,並且通過URL傳遞urlvalue1變數和urlvalue2變數,其值分別為intel和amd。在*.cs的伺服器端方法中也可以調用HttpResponse對象的Redirect方法,將瀏覽器端重定向到新頁面並通過URL傳值,如以下代碼所示。
Response.Redirect(「~/GetValues.aspx?urlvalue1=intel&urlvalue2=amd」);
2.Session傳值
這種方法將每份數據存儲於伺服器變數中,可以傳遞比較多的數據,並且安全性較高,所以常用於用戶身份的驗證功能中。不過,Session變數如果存儲過多的數據會消耗過多的伺服器資源,編程者在使用時應該慎重,其使用方法如以下代碼所示。
Session["SessionValue"] = 「ATI」;
//也可以用索引存儲
Session[0] = 「ATI」;
//在其他頁面的伺服器端方法中取值方式為:
string str = Session["SessionValue"].ToString();
//也可以用索引獲取
string str = Session[0].ToString();
Session的可在應用程序的多個頁面中以名稱/值對的方式共享,直到瀏覽用戶關閉自己的瀏覽器或者伺服器Session超時(可設置,默認為20分鍾)。
3.Cookie傳值
Cookie是一種比較特殊的數據存儲方式,因為這種方式將數據存儲於瀏覽用戶的電腦中,以文本文件的形式存在於磁碟中。這種方式非常有意思,很多登錄系統就是利用Cookie實現用戶自動登錄。即用戶登錄一次的登錄信息將被寫入到用戶電腦的Cookie文件中,下次登錄時,網站自動讀取該Cookie完成身份驗證。通過Cookie傳遞數據雖然很方便,保存時間可以自由設置,但是安全性不高,編程者不應過於依賴Cookie,而應採用結合的方式完成敏感數據的存儲。
ASP.NET中操作Cookie的主要類型位於System.Web命名空間下,分別為HttpCookie、HttpResponse以及HttpRequest。HttpCookie可建立和操作獨立Cookie的安全類型,訪問HttpResponse和HttpRequest的Cookies屬性可以獲取HttpCookieCollection集合對象,以讀取或添加HttpCookie對象。添加Cookie的方法如以下代碼所示。
//創建一個HttpCookie 對象,向構造函數傳遞名稱值
HttpCookie ck = new HttpCookie("CookieValue");
//設置ck的「Value」屬性(值)
ck.Value = 「Cookie值」;
//設置ck的過期時間為當前時間加上360s,即6分鍾後失效
ck.Expires = DateTime.Now.AddSeconds(360);
//設置ck有效范圍(域限制)
ck.Domain = "www.google.cn";
//將ck添加至HttpCookieCollection對象
Response.Cookies.Add(ck);
//也可為以下方法添加
//Response.AppendCookie(ck);;
讀取用戶的Cookie則更為簡單,只需根據名稱讀取HttpCookieCollection集合對象中的子項即可,如以下代碼所示。
string str = Request.Cookies["CookieValue"].Value;
除此之外,還可以利用一個HttpCookie存儲多個名稱/值對形式的Cookie信息,如以下代碼所示。
HttpCookie ck = new HttpCookie("CookieValue");
//以名稱/值對的方式添加多個Cookie信息
ck.Values.Add("value1", 「one」);
ck.Values.Add("value2", "two");
//設置ck的過期時間為當前時間加上100年,即100年後失效
ck.Expires = DateTime.Now.AddYears(100);
//通過以下兩種方法添加
Response.Cookies.Add(ck);
//Response.AppendCookie(ck);
讀取這些Cookie如以下代碼所示。
string str = "值1:"+Request.Cookies["CookieValue"].Values["value1"];
str += "值2:" + Request.Cookies["CookieValue"].Values["value2"];
說明:多數瀏覽器支持最多可達4096位元組的Cookie,如果要將為數不多的幾個值保存到用戶計算機上,瀏覽器還限制了每個站點可以在用戶計算機上保存的Cookie數量。大多數瀏覽器只允許每個站點保存20個Cookie。如果試圖保存更多的Cookie,則最先保存的Cookie就會被刪除。還有些瀏覽器會對來自所有站點的Cookie總數作出限制,這個限制通常為300個。用戶可以設置自己的瀏覽器,拒絕接受Cookie,這種情況下只能結合其他的數據存儲方式。
4.Server.Transfer傳值
這個方法的步驟相對較多,使用該方法編程者可以在另一個頁面以公開對象屬性的方式來存取值,使用這種方法是面向對象的。該方法的代碼編寫並不復雜,首先通過定義一個public許可權的屬性,該屬性可返回所需傳遞的值。然後在第兩個頁面中,使用Context.Handler屬性來獲得前一個頁面實例對象的引用,即可通過訪問自定義的屬性獲取需要的值。
假設SendValues.aspx頁面為傳遞數據的頁面,在SendValues.aspx.cs的頁面類中定義一個public屬性,通過get直接返回需要傳遞的值(可為頁面中某個伺服器控制項的屬性值)。
public string TransferData
{
get
{
return "VIA";
}
}
在SendValues.aspx.cs的某個方法(如Button控制項的Click事件處理方法)中調用HttpServerUtility對象的Transfer方法,如以下代碼所示。
Server.Transfer("~/GetValues.aspx");
假設GetValues.aspx為第二個頁面,在GetValues.aspx.cs的Page_Load方法中接收前一個頁面所傳遞的值,方法如以下代碼所示。
//定義SendValues類型的變數SV_Page
SendValues SV_Page;
//訪問HttpContext對象的Handler屬性,將值轉換為SendValues類型,引用賦值給SV_Page
SV_Page = (SendValues)Context.Handler;
//SV_Page即為SendValues.aspx頁面類的對象,直接獲取其TransferData屬性值
string str = SV_Page.TransferData;
可見,這種方法對於有面向對象基礎的編程者而言非常容易理解。不過頁面間如果需要傳遞數量比較多的值,這種方法需要定義過多的屬性,略顯繁雜。編程者還可以直接使用HttpContext對象的「Iterms」屬性添加多項名稱/值對的數據,在SendValues.aspx.cs調用HttpServerUtility對象的Transfer方法的某個方法中,修改代碼如下所示。
Context.Items["value1"] = "one";
Context.Items["value2"] = "two";
在GetValues.aspx.cs的Page_Load方法中接收前1個頁面所傳遞的值,修改代碼如以下代碼所示。
string str = "值1:" + Context.Items["value1"].ToString();
str += "值2:" + Context.Items["value2"].ToString();
5.Application傳值
嚴格地說應該是通過HttpApplication對象在伺服器端生成一個狀態變數來存儲所需的信息,該HttpApplication對象變數的可用范圍覆蓋整個WEB應用程序。所以該對象一般存儲一些要公布的信息,如在線人數等,而對於那些涉及用戶個人的敏感數據則不用這種方法存儲。HttpApplication對象有兩個常用的方法,即Lock和UnLock方法,可用於處理多個用戶對存儲在Application變數中的數據進行寫入的問題。Lock方法鎖定全部的Application變數,從而阻止其他用戶修改Application對象的變數值,UnLock方法則解除對HttpApplication對象變數的鎖定。通過HttpApplication對象傳值的方法和Session比較相似,在頁面類的某個方法中編寫代碼如下所示。
Application["a"] = "微軟公司";
Application["b"] = "蘋果公司";
Application["c"] = 「Mac」;
以上代碼很輕松地將三個字元串值保存在HttpApplication對象的變數中了,並且這些變數是整個程序共享的,其他用戶通過相應的頁面同樣可以獲取。獲取這些變數的方法如以下代碼所示。
Application.Lock();
string str = "值1:" + Application["a"];
str += "值2:" + Application["b"];
str += "值3:" + Application["c"];
Application.UnLock();
注意:雖然使用方式和Session相似,但是Session是對於每個單獨的用戶,當該用戶關閉瀏覽器,則Session失效。HttpApplication對象存儲的變數是針對所有訪問程序的用戶,即使有用戶關閉了瀏覽器,變數的值不會丟失。
6.跨頁面傳送
跨頁面傳送和調用HttpServerUtility對象的Transfer方法有相似之處,不過效率更高。因為調用HttpServerUtility對象的Transfer方法是基於伺服器的方法,而跨頁面傳送是基於瀏覽器端的。這個方法主要是設置控制項的「PostBackUrl」屬性,使該控制項(如Button)操作後轉向指定頁面,並且這個指定頁面可以直接獲取前一個頁面的所有控制項對象及其屬性值。假設第一個頁面為SendValues.aspx,在該頁面中(非*.cs代碼文件)添加兩個控制項,設置如以下代碼所示。
<asp:TextBox runat="server" ID="PbValue" Text="Geforce TX280"></asp:TextBox>
<asp:Button runat="server" ID="btn6" Text="跨頁面傳送方式" PostBackUrl="~/GetValues.aspx" />
以上代碼中,TextBox控制項的「Text」屬性為「Geforce TX280」,這是所需要傳送的值。而Button控制項的「PostBackUrl」屬性指定了GetValues.aspx頁面,該頁面即可接收所需傳遞的值。在GetValues.aspx.cs的Page_Load方法中,編寫以下代碼。
//PreviousPage為向當前頁面傳輸控制項的頁面
if (PreviousPage != null)
{
//從PreviousPage容器中搜索「ID」為PbValue的控制項,並轉換為TextBox類型
TextBox tb = (TextBox)PreviousPage.FindControl("PbValue");
//如果tb不是空引用
if (tb != null)
{
//將tb的「Text」屬性值給str變數
string str = tb.Text;
}
}
以上代碼輕松獲得了前一個頁面中TextBox控制項的「Text」屬性值,這種方法比調用HttpServerUtility對象的Transfer方法更加快捷,並減少了處理步驟。
以上為常用的頁面間傳值方法,如果有特殊需要,還可以使用其他方法,例如通過資料庫存儲臨時數據等

⑼ 頁面傳值的幾種方式

一. 使用QueryString變數
QueryString是一種非常簡單也是使用比較多的一種傳值方式,但是它將傳遞的值顯示在瀏覽器的地址欄中,如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。

Response.Redirect( "target.aspx?param1=hello¶m2=hi ")
接收頁面: string str = Request.QueryString["param1"];
string str1 = Request.QueryString["param2];
二.使用Cookie對象變數(Cookie是存放在客戶端的)
設置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);

獲取Cookie:
string name= Request.Cookie["name"].Value.ToString();

三. 使用Session變數(session是存放在伺服器端的)
設置Session: Session["name"] ="hello";
獲取Session: string name = Session["name"].ToString();
四.使用Application 對象變數
Application對象的作用范圍是整個全局,也就是說對所有用戶都有效。此種方法不常使用,因為Application在一個應用程序域范圍共享,所有用戶可以改變及設置其值,故只應用計數器等需要全局變數的地方。
設置Application : Application["name"] = ="hello";
獲取Application : string name = Application["name"].ToString();
五. PostBackUrl()方法
default.aspx頁面:

Code
1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
2
default2.aspx頁面:

Code
1 if (PreviousPage != null)
2 {
3 TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
4 Response.write(textBox1.Text );
5 }

六.使用Server.Transfer方法
這個才可以說是面象對象開發所使用的方法,其使用Server.Transfer方法把流程從當前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,所以這個方法是完全面象對象的,簡潔有效。下面這個代碼是展示在需要很多個參數的時候,使用的方法,如果參數比較少就沒必要使用這個方法了.
如果讓所有的查詢頁面都繼承一個介面,在該介面中定義一個方法,該方法的唯一作用就是讓結果頁面獲得構建結果時所需的參數,就可實現多頁面共享一個結果頁面操作!

閱讀全文

與伺服器端不同頁面之間怎麼傳值相關的資料

熱點內容
機器人編程方法 瀏覽:990
表盤編程gt 瀏覽:7
java源代碼閱讀 瀏覽:734
程序員用什麼鍵盤羅技 瀏覽:167
為什麼安卓手機每天都要更新app 瀏覽:705
java怎麼成為程序員 瀏覽:288
西門子s7200編程電纜怎麼連接 瀏覽:530
下載網頁中的pdf文件 瀏覽:87
音樂緩存文件夾的軟體 瀏覽:394
Dkms編譯列印機驅動 瀏覽:992
解壓縮文件操作異常 瀏覽:556
等待代碼編譯時你會幹嘛 瀏覽:493
單片機c語言中變數右移8位 瀏覽:81
解壓的一個小短片 瀏覽:831
二級壓縮空壓機哪家好排行 瀏覽:743
基於單片機超聲波測距 瀏覽:130
模擬隨機紅包演算法 瀏覽:387
程序員接外包網站 瀏覽:137
哪裡可以買拆車件app 瀏覽:992
限流演算法漏桶和令牌桶區別 瀏覽:316