2012-12-04 33 views
0

我的頁面路由映射根據特定標準而變化。要確定此標準,我需要訪問HttpRequest,這意味着我無法在Application_Start()中執行路線映射。在那個筆記上,我已經在我的默認頁面PreInit()上完成了它,它似乎沒有問題。然而,我所看到的所有使用路由表的例子都是在Application_Start中完成的,這純粹是爲了避免清理路由列表並重新添加它們?它會對我的web應用程序造成任何傷害嗎?在PreInit()上映射RouteTable - 它會導致任何問題嗎?

編輯:例:

我加載基於項目的數量和是否該網站被觀看的移動設備上,不同的文件夾控制關於這一點,我需要映射我的路線之前,知道這個信息,如所以:

RouteCollection.MapPageRoute("OneParam", "{Action}.html", String.Format("~/{1}{2}/Default.aspx", ProjectNumber, MobilePathStr)); 

這將映射到像~/1234/Mobile/Default.aspx或者可以映射到~/1234/Default.aspx

+0

這不是一個好主意。你想達到什麼目的? – SLaks

+0

我已經添加了一個我正在做的事情的例子。 – webnoob

+0

路由集合是全局(共享)狀態。這是行不通的。 – SLaks

回答

0

不要這樣做。

相反,您應該創建自己的RouteBase類,該類爲每個請求查找信息並運行相應的處理程序。

要發送到ASPX頁面,您可以選擇return BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page)) as Page;或創建PageRouteHandler並委託給它。

相關問題