【C#】 用Route進行URL重寫


.NET Framework 4中,微軟推出了Route機制。這種機制不僅在MVC中大量運用,在WebForm中也可以使用。

和Contex.RewritePath()一樣,Route功能也是寫在Global.asax文件中。

 1.設置默認頁面

具體代碼如下:

如代碼所示,該路由會將網站默認轉向SimpleURLRewriting頁面。

實際訪問后,效果如下:

 

2.配置參數

在實際項目中,我們訪問網站時經常會使用參數,像這種情況應該怎么配置呢。

Global.asax:

頁面后台代碼:

它將獲取URL中占位符為{parameter}的參數,因此通過此重寫規則可訪問如下頁面:

但是對如下URL的請求,參數無效果

上圖中,雖然沒有在占位符為{parameter}的位置設置參數,參數項顯示不為空。

這是因為在設置路由時,給{parameter}設置了默認參數。

 

3.設置正則表達式

除了想上面所示重寫URL,設置默認頁面及默認參數外,還能讓占位符的參數滿足一定的正則條件。

根據設置的正則條件要求,parameter必須是數字。

 

如不滿足,則找不到改頁面

4.PostBack數據回送

在設置默認頁面時我們會發現,與使用Contex.RewritePath()后的效果不同,

使用路由功能后,頁面的URL與地址欄中的URL保持一致。

因此在PostBack的時候,無需像Contex.RewritePath()一樣對Form進行改寫。

 

現在讓我們看看實際效果:

重寫規則代碼:

    

 

5.鏈接處理

對URL進行重寫后,可能會導致相對鏈接、圖片和CSS的訪問路徑不正確的問題。

如在EN/SimpleURLRewriting.aspx中

    

訪問頁面時

因此當如果出現URL重寫導致相對路徑不正確時,為了確保這個圖像和鏈接指向正確的網址,最好指定絕對路徑地址。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM