2013-04-04 118 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