在.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重寫導致相對路徑不正確時,為了確保這個圖像和鏈接指向正確的網址,最好指定絕對路徑地址。