2013-04-04 91 views
1

好的。我希望這是一個正確的問題和標題。在asp.net中的URL路由

我完全是asp.net和c#的新手。我一直在尋找答案的日子,一無所獲。所以我認爲這是問這個問題的最好的地方。

這是我目前的URL

http://localhost:7474/mywebsite/ProductDetails.aspx?Category=CSR&artID=36&alias=support-for-central-jaya-and-yogyakarta-earthquake-disaster 

我要讓搜索引擎友好的URL。我可以讓上面的URL爲

http://localhost:7474/mywebsite/ProductDetails/CSR/36-support-for-central-jaya-and-yogyakarta-earthquake-disaster 

僅供參考我不使用MVC。

+0

您使用的是哪個IIS版本? – cheesemacfly 2013-04-04 03:31:11

+0

@cheesemacfly我使用IIS版本6.0 – 2013-04-04 06:56:16

回答

2

是的,你可以。

看看RouteCollection.MapPageRoute的細節,但大致需要下面的代碼:

routes.MapPageRoute(
    "ProductDetails", 
    "/ProductDetails/{Category}/{artID}/{alias}", 
    "~/ProductDetails.aspx"); 

然而artid的數據類型和別名不能在同一網段。他們需要用斜線(/)分隔。

另一個區別是,你需要抓住的,而不是查詢字符串從的RouteData參數值,以便代替:

Request.QueryString["Category"] 

你這樣做:

Page.RouteData.Values["Category"] 

PS:我做到了從頂部所以它可能無法編譯

+0

感謝您的快速響應。我會嘗試你的代碼,並讓你知道如果這對我有用。 – 2013-04-04 06:04:38

+0

我想我不能使用你的代碼,因爲我的版本是.NET 3.5 :(。也許你有另一個建議? – 2013-04-04 06:57:50

+0

嗯....你可能沒有在3.5中是RouteCollection的MapPageRoute擴展方法。 ,應該可以下載aspnetwebstack,看看它是如何實現的並且自己做,必要的路由基礎設施在那裏,你只需要連接它就可以工作,我建議你研究如何實現自定義路由處理程序。 – tucaz 2013-04-04 20:35:01