2013-12-23 24 views
4

我有路由在ASP.NET C#中的WebForms使用Microsoft.AspNet.FriendlyUrls但所有網頁的工作。Page.RouteData.Values是空的一個頁面而不是另一個

下面是一個例子:

routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx"); 

在上述頁(List.aspx)中有在的Page.RouteData沒有values.count在Page_Load。

​​

我在同一網站的另一個頁面,這個信息匹配到它:

routes.MapPageRoute("{Location}/{ZipCode}/{Name}/{LocID}/{ID}/{Code}/", "{Location}/{ZipCode}/{Name}/{LocID}/{ID}/{Code}/", "~/place.aspx"); 

此頁面(place.aspx)總是顯示路線的正確計數。

在調試模式下的列表頁面上,我檢查了查詢字符串和位置,ZipCode在那裏。

那麼,什麼可能導致Page.RouteData不能在一個頁面中顯示,而是在另一個頁面中可用?

+0

仍有此問題。幾個月前我繼續使用查詢字符串(YUK!)。今天我決定在谷歌上進行另一次搜索,因爲我在系統中再次遇到這個問題。我發現這個線程,我正在讀它思考「WOW與我一樣的問題!」然後我看了看,這是我的帖子! 不知道我是否可以更具體地解決這個問題。如果我點擊一個鏈接發送給我一個頁面,它看起來正在工作。但不是page_load。 –

+0

看到我在這個問題上的回答:https://stackoverflow.com/a/46365650/14263 –

回答

8

我很新的URL路由,但我想我遇到了類似的問題,也找到了解決方案。您是否嘗試過:的

routes.MapPageRoute("ListDetails/{Location}/{ZipCode}/", "ListDetails/{Location}/{ZipCode}/", "~/List.aspx"); 

代替

routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx"); 

在我來說,我有:

routes.MapPageRoute(
    "ImageDelete", 
    "Admin/Images/Delete/{nameToKill}", 
    "~/Admin/Images.aspx" 
); 

這表明Page.RouteData.Values總是空的。

當我把它改成

routes.MapPageRoute(
    "ImageDelete", 
    "Admin/Image/Delete/{nameToKill}", // mind the missing 's' 
    "~/Admin/Images.aspx" 
); 

它的工作!

我認爲路線可能不會以實際存在的網站的網址開頭。

+2

哇,謝謝你告訴我一些有用的東西,應該在文檔https://msdn.microsoft.com/en-us /library/dd329551(v=vs.100).aspx – karlingen

相關問題