1. 程式人生 > >使用者登入後跳轉到 登入前 的頁面 url 跳轉

使用者登入後跳轉到 登入前 的頁面 url 跳轉

在一般有使用者登入的網站中,都會有需要使用者登入後才能操作的頁面,如果在使用者登入後能跳轉到之前的頁面,就會給使用者一個很好的體驗,也能讓他們更容易的瀏覽要操作的頁面。這中間主要用到的是獲取Url引數,獲取後用於跳轉。

主要實現步驟:

為了能很好的說明,主要已兩個頁面為例,order.aspx,login.aspx

1、order.aspx,實現訂單頁面,主要功能是實現使用者在選定商品時提交訂單,但使用者必須登陸後才能實現提交的功能,這樣才知道是哪個買的嘛。。

    以程式碼表示,能更清楚,在載入到order.aspx頁面時,判斷使用者是否登入,這判斷用session判斷

  

  上面主要是實現把當前頁的url地址傳遞給登入頁面

2、login.aspx 實現使用者登入,得到傳遞過來的Url引數

     程式碼如下:

    

    只需簡單的跳轉就可以實現,如果這樣類似的操作很多,最好給予封裝成方法統一呼叫

注: 如果在跳轉的頁面是在虛擬目錄下,而不是根站點目錄下,設定有些不同,就要進行判斷。。。

這樣的話 就要進行url虛擬目錄判斷

程式碼註釋:Req.Url.GetLeftPart(UriPartial.Authority); 返回http://localhost 在根目錄情況下,如果是在虛擬目錄下(虛擬目錄設定為web)則返回的是http://localhost/web

這樣在order.apsx頁面中就在執行跳轉之前就要加上Req.Url.GetLeftPart(UriPartial.Authority)的返回值

如: string returnUrl =Req.Url.GetLeftPart(UriPartial.Authority)+ Request.Url.AbsoluteUri;//獲取當前url地址

這樣就能正確的執行跳轉了。。。

附:

這裡附上Request獲取url資訊的各種方法比較

測試的url地址是http://www.test.com/testweb/default.aspx, 結果如下:

Request.ApplicationPath: /testweb
Request.CurrentExecutionFilePath: /testweb/default.aspx
Request.FilePath: /testweb/default.aspx
Request.Path: /testweb/default.aspx
Request.PathInfo:
Request.PhysicalApplicationPath: E:/WWW/testweb/
Request.PhysicalPath: E:/WWW/testweb/default.aspx
Request.RawUrl: /testweb/default.aspx
Request.Url.AbsolutePath: /testweb/default.aspx
Request.Url.AbsoluteUri: http://www.test.com/testweb/default.aspx
Request.Url.Host: www.test.com
Request.Url.LocalPath: /testweb/default.aspx 

綜上就為實現登入跳轉的基本實現,主要是運用了url引數對跳轉前的判斷,然後在登入的時候進行獲取。。

主要需要了解的是Request.Url的給個不同屬性