摘要:asp.net是目前最流行的web開發的主流技術之一,因為它是基于通用語言編譯運行的程序,所以它具有強大性和適應性,開發起來簡單易學,管理起來非常高效。在開發過程中會經常遇到重定向的問題,這里重點探討在asp.net開發中重定向實現的方法及技巧。
關鍵詞:asp.net;網頁重定向;網址重寫
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2011)04-0842-02
Methods and Skills for Realizing Redirection in Asp.net
WANG Hai-yan1, ZHANG Hua-gui2
(1.Educational Technology Center of 65066 Troops Shenyang Military Area Command, Dalian 116100, China; 2.Information Center of Dalian Sanatorium Shenyang Military Area Command, Dalian 116013, China)
Abstract: Asp.net is one of the most popular mainstreaming technologies for web development. Since it is a program operating based on universal language compiling, it is very powerful and has good adaptability. Meanwhile, it is easy to be developed and high efficient in management. In the developing process, the problem of redirection will occur frequently. This paper mainly focuses on the methods and skills for realizing redirection in asp.net development.
Key words:asp.net; webpage redirection; website rewriting
通常我們在瀏覽web網頁、查看bbs數據的時候,在感興趣的鏈接上點擊鼠標就可以跳到另一個頁面,查看相關內容;在填寫完留言板后點擊提交按鈕,就可以把我們的留言數據提交到數據庫中去,這些都是通過網頁的重點向功能來實現的。網頁重定向技術可以在網站的各個頁面間根據需要自由跳轉,在web頁面加載、數據傳輸等方面的應用也十分廣泛,在asp.net中實現網頁重定向技術共有四種方法。下面分別來介紹這幾種具體實現重定向的方法。
1 超級鏈接方法
超級鏈接是網頁中最常見的一種方法,也是最簡單的。網頁制作中傳統的做法是使用HTML標記來創建超級鏈接,根據需要跳轉到指定的URL,這個URL既可以是相同網站的網頁也可以是外部網站的網頁。
如:訪問網易網站
其中,target屬性用于指定目標框架,href屬性用于指定URL,title用于指定鼠標指針移到文本鏈接上方時的工具提示信息,…標記之間的內容是超級鏈接的內容。
在asp.net中創建超級鏈接的方法是使用HyperLink服務器控件。如:代碼實例:
這兩種方法的特點在于可以將頁面重定向到任何頁,而不局限于同一Web應用程序當中。但是不會將當前頁的信息傳遞到目標頁,如果需要跨頁傳遞(共享)信息,通常需要使用查詢字符串或會話狀態。
2 Response.Redirect方法
用 Redirect 方法可將瀏覽器重定向到另一個 URL,而不是將內容發送給用戶。例如,如果您想確認用戶是否已從主頁進入了您的應用程序,以便能收到一個客戶 ID,則可以檢驗他們是否有客戶 ID 號;如果沒有,就可以將其重定向到主頁。以下就是具體例子:
可以通過調用 Redirect 方法為頁面設置重定向URL。代碼實例:
protected void Button1_Click(object sender, EventArgs e)
{Response.Redirect(\"~/Test.aspx\");}
Redirect方法接受一個表示目標位置的字符串。當服務器遇到Redirect語句時,將發送一條指令(包含新的地址)給瀏覽器,然后讓瀏覽器去發送http請求。與超鏈接一樣,Redirect 方法不會向目標頁傳遞信息。如果源頁和目標頁位于同一Web應用程序中,則可以通過將數據存儲在會話狀態中在源頁和目標頁之間共享數據。
3 Server.Transfer方法
而Transfer 方法則是在服務器上直接重定向到目標頁。也就是說,比起Redirect方法,Transfer少了一個由服務器傳輸數據到瀏覽器的過程,而直接由服務器端轉向目標頁。Transfer方法的另一個顯著特點就是在頁面轉換時,Request集合里的內容不會丟失,從而為開發人員帶來了方便。代碼實例:
protected void Button1_Click(object sender, EventArgs e)
{Server.Transfer(\"~/Test.aspx\");} 由于源頁和目標頁之間的傳輸在服務器上進行,瀏覽器沒有任何關于更改后的頁的信息,它仍保留有關原始(源)URL 的信息。例如,Internet Explorer 中的“地址”框在執行傳輸后不會發生變化,而是繼續顯示最近請求的頁(通常為源頁)的 URL。因此,對于以隱藏 URL 的方式向用戶呈現頁面的應用程序而言,調用 Transfer 方法是一種最佳的策略。注意:采用Transfer方式重定向,源頁與目標頁必須位于相同的 Web 應用程序中,否則會引發異常。
4 跨網頁傳送PostBackUrl方法
與服務器端重定向不同,跨頁發送是直接在客戶端將源頁面回傳到其他頁面(默認是回傳頁面本身);所有實現了IButtonControl的空間都具有PostBackUrl屬性,設置這個屬性可以將當前頁面回傳到目標頁面。該屬性會將源頁上控件的值發送到目標頁,所以目標頁能夠從源頁(previouspage)中讀取控件值和公共屬性值。
此外,跨頁發送是基于控件間的傳遞,而不是基于頁面,所以可以更加靈活而直接的實現頁面回發。假設有兩個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代碼如下:
btnSubmit\", \"\", 1, \"\",\"Target.aspx\", 1, 1))\" id=\"btnSubmit\" /> 對于上面的html代碼來說,當用戶單擊按鈕時,瀏覽器將提交目標URL(Target.aspx),而不是源URL。
通過以上方法,就可以在asp.net中輕松實現網頁的重定向。這些實現方法,各有優點,在B/S的程序設計中可以根據自己的需要靈活選擇。
參考文獻:
[1] 陳啟祥,左強.ASP.NET頁面間傳值方法研究[J].計算機工程,2006(8).
[2] 斯琴高娃.一個課程網站在線制作平臺的研究[D].吉林:吉林大學,2006.
[3] 韋揚,徐凱聲.ASP.NET對頁面運行效率影響的研究[J].交通與計算機,2001(6).
[4] 張文增,趙冬斌,孫振國,等.ASP.NET——動態網頁開發趨勢[J].計算機工程,2002(3).
[5] 賀金凌.基于.NET平臺的WEB解決方案的安全機制[J].計算機應用與軟件,2002(11).