2013-10-16 56 views
0

我正在使用路由將所有url重定向到同一頁面。routes asp.net webform default page

我不想指定每個頁面的路由,因爲內容管理系統正在改變它。

我只有2對項目

1)的Default.aspx

2)頁cms.aspx

今天我用

routes.MapPageRoute("defaultRoute3", "{*value}", "~/cms.aspx"); 

和CMS直到。 aspx頁面我使用此代碼來了解要加載哪個視圖

string objectCurrentNameUrl = Page.RouteData.Values["value"] as string; 

    string[] arrOfParmeters = objectCurrentNameUrl.Split('/'); 

一切都只是完美的一個參數 例如: mywebsite.com/zone

是重定向到cms.aspx,然後我做了分裂。

當試圖使用antoher參數的URL

mywebsite.com/zone/114334

重定向是確定cms.aspx頁面,但隨後路由開始發送所有JavaScript的問題開始,CSS等也cms.aspx。

任何想法,所有的URL如何路由cms.aspx沒有路線腳本和CSS

回答

0

編輯: 這個例子會幫助你只匹配擴展名的網址,因此將保留您的靜態文件安全,正確地返回

public Route MapPageRoute(
    "defaultRoute3", 
    "{folder}/{id}", 
    "~/cms.aspx", 
    false, 
    null, 
    new RouteValueDictionary { { "id", "(.*)/([^\./]+)$" }} 
) 

這是您可以使用的完全超載below overload。使用約束參數排除靜態文件

public Route MapPageRoute(
    string routeName, 
    string routeUrl, 
    string physicalFile, 
    bool checkPhysicalUrlAccess, 
    RouteValueDictionary defaults, 
    RouteValueDictionary constraints, 
    RouteValueDictionary dataTokens 
) 
+0

您可以將相關代碼添加到您的答案嗎?通常不會鼓勵鏈接回答 - 如果鏈接改變或消失,您的回答將不再有幫助。 – MikeSmithDev

+0

謝謝@MikeSmithDev。更新。 –

+0

-1請更新以顯示如何使用此重載來解決原始問題。 –