asp.net中頁面之間傳值我們用得最多的就是get,post這兩種了,其它的如session,appliction,cookie等這些相對來說少用也不是常用的,只是在特殊情況下在使用了。
1. Get(即使用QueryString顯式傳遞) 方式:在url后面跟參數。 特點:簡單、方便。 缺點:字符串長度最長為255個字符;數據泄漏在url中。 適用數據:簡單、少量、關鍵的數據。 適用范圍:傳遞給自己、傳遞給另一個目標頁面;常用于2個頁面間傳遞數據。 用法:例如:url后加?UserID=&hell 例子:(1)a.aspx 代碼如下 復制代碼 PRivate void Button1_Click(object sender, System.EventArgs e) { string s_url; s_url = "b.aspx?name=" + Label1.Text; Response.Redirect(s_url); } (2)b.aspx 代碼如下 復制代碼 private void Page_Load(object sender, EventArgs e) { Label2.Text = Request.QueryString["name"]; } 2. Post 方式:通用的方式。利用form提交。 特點:最常用的方法。常用技巧是把隱秘的數據存在隱藏域中由form提交。 適用數據:大量數據,包括文件上傳。 適用范圍:同Get方法 用法:在客戶端form指定action目標后submit、在asp.net的伺服端中使用server.Transfer(url)提交;在伺服端中用Request.Form["FormFieldID"]獲取。 實例 代碼如下 復制代碼 <form id="form1" action="GetUserInfo.aspx" method="post"> <table align="center" cellpadding="0" cellspacing="10px" border="0" style="width: 320px;border:1px solid gray;" > <tr> <td colspan="2" class="title" align="center">修改密碼</td> </tr> <tr> <td class="left">輸入新密碼:</td> <td class="right"> <input type="passWord" id="userPwd" name="userPwd" style="width: 175px" /> </td> </tr> <tr> <td class="left"> 確認密碼:</td> <td class="right"> <input type="password" id="verifyPwd" name="verifyPwd" style="width: 175px" /> </td> </tr> <tr> <td colspan="2" style="text-align: center"> <hr /> (www.111cn.net) <input type="hidden" name="username" value="<%=后臺定義的變量讀數據庫時賦值%>"/></td> <input type="submit" value="修改" /> <input type="reset" value="重置" /> </td> </tr> </table> </form> 有一個方法,根據POST和GET分別取值。 代碼如下 復制代碼 public object string GetValueFromPage(string inputName,int type) { HttpContext rq = HttpContext.Current; object TempValue = ""; if (type==1) { if (rq.Request.Form[inputName] != null) { TempValue = rq.Request.Form[inputName]; } } else if (type==0) { if (rq.Request.QueryString[inputName] != null) { TempValue = rq.Request.QueryString[inputName]; } } return TempValue;} 那么當提交至GetUserInfo.aspx頁面時,GetUserInfo.aspx.CS中可以這樣獲取值。 下面介紹一下其它的傳值缺點和優點 cookie 方式:將數據存在客戶端的經典方法。 缺點:安全性低、受客戶端設置限制、一個站點僅存20個cookie,每個容量4096字節。 Session 方式:將用戶數據存儲在伺服端。 特點:asp.net中可以設置session的存儲方式、位置、SessionID的保存是否依賴cookie。 可以直接存儲對象。 缺點:asp.net中有失效的隱患Cache 方式:將用戶數據存儲在伺服端數據緩存中。 特點:可以大大提高效率。 可以直接存儲對象。Appliction 方式: 將數據存儲于此,相當于全局變量。 特點:可以直接存儲對象。整個站點的共享數據ViewState 方式:asp.net特有機制,用來恢復頁面狀態。 特點:將頁面各控件及其所存數據序列化存在name為_ViewState的隱藏域中。 缺點:存在HTML中,安全性較低??梢栽O置加密和驗證,但數據量會大增、效率有影響。Static 方式: 將數據存于靜態變量中。 特點:利于提高效率。 缺點:若用不好會致使用戶或頁面間數據紊亂,造成極大的隱患。建議只賦值一次,絕對禁止為單個用戶而更改此值。 總結:了上面這些我沒人詳細介紹的頁面之間傳值方法看起來真不適合我們常用的WEB中的普通的頁面與頁面之間傳值了,只能適合于特殊的場合了。from:http://www.111cn.net/net/net/42641.htm
新聞熱點
疑難解答