三種asp.net頁(yè)面跳轉(zhuǎn)的方法
本文實(shí)例為大家分享了asp.net頁(yè)面跳轉(zhuǎn)的三種方法,供大家參考,具體內(nèi)容如下
第一種方法:response.redirect
這個(gè)跳轉(zhuǎn)頁(yè)面的方法跳轉(zhuǎn)的速度不快,因?yàn)樗?個(gè)來(lái)回(2次postback),但它可以跳轉(zhuǎn)到任何頁(yè)面,沒(méi)有站點(diǎn)頁(yè)面限制(即可以由雅虎跳到新浪),同時(shí)不能跳過(guò)登錄保護(hù)。但速度慢是其最大缺陷!redirect跳轉(zhuǎn)機(jī)制:首先是發(fā)送一個(gè)http請(qǐng)求到客戶端,通知需要跳轉(zhuǎn)到新頁(yè)面,然后客戶端在發(fā)送跳轉(zhuǎn)請(qǐng)求到服務(wù)器端。需要注意的是跳轉(zhuǎn)后內(nèi)部空間保存的所有數(shù)據(jù)信息將會(huì)丟失,所以需要用到session。
代碼如下
using System; using System.Web.UI; namespace WebApplication1 { public partial class List : Page { protected void Page_Load(object sender, EventArgs e) { // Get response. var response = base.Response; // Redirect temporarily. // ... Don't throw an HttpException to terminate. response.Redirect("http://www.dbjr.com.cn", false); } } }
代碼如下
HTTP/1.1 302 Found Content-Type: text/html; charset=utf-8 Location: //www.dbjr.com.cn Server: Microsoft-IIS/7.0 Date: Fri, 13 Aug 2010 21:18:34 GMT Content-Length: 144 <html> <head> <title>Object moved</title></head><body> <h2>Object moved to <a href=//www.dbjr.com.cn/list/index_1.htm>here</a>.</h2> </body> </html>
第二種方法sever.execute
這個(gè)方法主要是用在頁(yè)面設(shè)計(jì)上面,而且他必須是跳轉(zhuǎn)同一站點(diǎn)下的頁(yè)面。這個(gè)方法是需要將一個(gè)頁(yè)面的輸出結(jié)果插入到另一個(gè)aspx頁(yè)面的時(shí)候使用,大部分是在表格中,將某一個(gè)頁(yè)面類似于嵌套的方式存在于另一頁(yè)面。
舉個(gè)例子看看:
1、創(chuàng)建一個(gè)web form
2、在新建的web form中放置一個(gè)button1,在放置兩個(gè)TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件
代碼如下
private void Button1_Click (object sender, System.EventArgs e) { Server.Transfer("webform2.aspx"); }
4、創(chuàng)建過(guò)程來(lái)返回TextBox1,TextBox2控件的值代碼如下:
代碼如下
public string Name { get { return TextBox1.Text; } } public string EMail { get { return TextBox2.Text; } }
5、新建一個(gè)目標(biāo)頁(yè)面命名為webform2
6、在webform2中放置兩個(gè)Label1,Label2
在webform2的Page_Load中添加如下代碼:
代碼如下
private void Page_Load (object sender, System.EventArgs e) { //創(chuàng)建原始窗體的實(shí)例 WebForm1 wf1; //獲得實(shí)例化的句柄 wf1=(WebForm1)Context.Handler; Label1.Text=wf1.Name; Label2.Text=wf1.EMail; }
第三種方法:server.transfer
速度快,只需要一次postback ,但是它必須是在同一個(gè)站點(diǎn)下,因?yàn)樗莝erver的一個(gè)方法。另外,他能跳過(guò)登錄保護(hù)。你可以寫個(gè)小程序試試:設(shè)計(jì)一個(gè)由頁(yè)面一到頁(yè)面二的跳轉(zhuǎn),但要進(jìn)入到頁(yè)面二需要登錄,form認(rèn)證,但如果跳轉(zhuǎn)語(yǔ)句使用transfer的話,那就不會(huì)彈出登錄頁(yè)面了。這個(gè)方法的重定向請(qǐng)求是發(fā)生在服務(wù)器端,所以瀏覽器的url地址仍然保留的是原頁(yè)面的地址!
代碼如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebForm1.aspx.cs" Inherits="WebForm1" %> <!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><br /> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> </div> </form> </body> </html> .net代碼 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class WebForm1 : System.Web.UI.Page { public string Time { get { return DateTime.Now.ToString(); } } public string TestFun() { return "Function of WebForm1 Called"; } protected void Page_Load(object sender, EventArgs e) { Context.Items.Add("Context", "Context from Form1"); } protected void Button1_Click(object sender, EventArgs e) { //this.TextBox2.Text =Request ["TextBox1"].ToString (); Server.Transfer("WebForm2.aspx", true);//第二個(gè)參數(shù)為false時(shí),WebForm2.aspx中不能獲得TextBox1的內(nèi)容 } }
如果要捕獲一個(gè)ASPX頁(yè)面的輸出結(jié)果,然后將結(jié)果插入另一個(gè)ASPX頁(yè)面的特定位置,則使用Server.Execute。
·如果要確保HTML輸出合法,請(qǐng)使用Response.Redirect,因?yàn)镾erver.Execute 或者Server.Transfer方法返回給客戶端的頁(yè)面包含多個(gè)<Html><body>標(biāo)記,不是合法的HTML頁(yè)面,在非IE瀏覽器中可能會(huì)發(fā)生錯(cuò)誤。
以上就三種asp.net頁(yè)面跳轉(zhuǎn)的方法,希望對(duì)大家的學(xué)習(xí)有所幫助。
- Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序
- Asp.NET MVC中使用SignalR實(shí)現(xiàn)推送功能
- asp.net mvc signalr簡(jiǎn)單聊天室制作過(guò)程分析
- Asp.net使用SignalR實(shí)現(xiàn)消息提醒
- Asp.net SignalR支持的平臺(tái)有哪些
- Asp.net使用SignalR實(shí)現(xiàn)發(fā)送圖片
- ASP.net實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的方法
- ASP.NET筆記之頁(yè)面跳轉(zhuǎn)、調(diào)試、form表單、viewstate、cookie的使用說(shuō)明
- 新發(fā)現(xiàn)原來(lái)documenet.URL也可以實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
- SignalR發(fā)送頁(yè)面跳轉(zhuǎn)通知的方法
相關(guān)文章
System.Data.SqlClient.SqlException: 無(wú)法打開(kāi)登錄所請(qǐng)求的數(shù)據(jù)庫(kù) 登錄失敗。
今天幫客戶配置服務(wù)器的時(shí)間,安全設(shè)置后,將sqlserver以普通用戶權(quán)限運(yùn)行的時(shí)候提示這個(gè)錯(cuò)誤。2011-08-08Visual Studio 2017設(shè)置版權(quán)的方法
這篇文章主要為大家詳細(xì)介紹了Visual Studio 2017設(shè)置版權(quán)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03asp.net(c#)動(dòng)態(tài)修改webservice的地址和端口(動(dòng)態(tài)修改配置文件)
這個(gè)問(wèn)題其實(shí)并沒(méi)有我想像的那個(gè)復(fù)雜,我們都知道怎么直接修改吧,那就是修改WebConfig文件的配置節(jié)2012-12-12詳解Asp.net web.config customErrors 如何設(shè)置
這篇文章主要介紹了詳解Asp.net web.config customErrors 如何設(shè)置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02理解ASP.NET Core 啟動(dòng)類(Startup)
這篇文章主要介紹了ASP.NET Core 啟動(dòng)類(Startup),文中運(yùn)用代碼講解相關(guān)知識(shí)非常詳細(xì),感興趣的小伙伴可以參考一下2021-09-09asp.net上傳圖片并作處理水印與縮略圖的實(shí)例代碼
asp.net 上傳圖片并作處理(生成縮略圖 、在圖片上增加文字水印、在圖片上生成圖片水?。┑膶?shí)例代碼,經(jīng)過(guò)測(cè)試!2013-06-06