2013-11-01 29 views
0

ASP.NET c#項目...試圖做一個非常簡單的頁面路由。ASP.NET頁面路由 - 從目標資源剝離的URL參數

請注意,我知道這實際上並沒有做任何動態路由...我有這樣的id硬編碼的原因。

例子:

RouteTable.Routes.MapPageRoute("Test", "ABC", "~/Test.aspx?id=101"); 

我可以瀏覽到http://www.mysite.com/ABC沒有問題,頁面Test.aspx的負載,路由工作正常。

但是...我的id=101哪裏去了?

Request.QueryString["id"] \\ is null... 
    Page.RouteData.Values["id"] \\ is null... 

如何在路由的目標資源中獲得硬編碼ID?

+0

去嘗試添加「DataTokens」,看看這是怎麼回事... –

回答

0

我通過傳遞DataTokens來實現它。

在我的真實世界的場景中,我不知道URL參數會是什麼(在我的問題中可能只有「id」,或者可能有其他人,有時沒有),所以我必須請執行以下操作:

首先檢查是否有「?」字符在路由目標中...如果存在,則:

  1. 在「?」後面運行字符串,通過字符HttpUtility.ParseQueryString
  2. 然後,通過收集循環,並將其添加到System.Web.Routing.RouteValueDictionary
  3. 後來終於加入航線,與DataTokens屬性設置爲RouteValueDictionary