ASP.NET MVC捕获其余的路由url

时间:2011-01-27 17:24:34

标签: routes asp.net-mvc-routing custom-routes

我想学习如何在ASP.NET MVC中创建“捕获其余”路径? 我需要采用格式化的URL,读取一些数据到它的值,并获取链接的其余部分并将其保存到某个变量,以便稍后我可以读取它并生成链接。
blog.mydomain.com/linker/process/2612010/2828/en/articles/october/asking-the-overflow/madd.aspx

读起来像:
memberid = 2612010
会员= 2828
language = en
restofurl =“articles / october / ask-the-overflow / madd.aspx”


或此链接:blog.mydomain.com/linker/process/2612010/2828/en/articles/october/read.aspx?m=828

读起来像:

memberid = 2612010
会员= 2828
language = en
restofurl =“articles / october / read.aspx?m = 828”


blog.mydomain.com/linker/process/2612010/2828/en/articles
于:
memberid = 2612010
会员= 2828
language = en
restofurl =“articles”


我考虑过这样的事情:

routes.MapRoute(
            "Linker", // Route name
            "Linker/Process/{memberid}/{memberrating}/{lang}/{*other}", // ULR with parameters
            new { controller = "Linker", action = "Process", lang = "en", other = UrlParameter.Optional} 
        );

此路由正确地获取链接的其余部分,但在以下结尾处省略URL参数: blog.mydomain.com/linker/process/2612010/2828/en/articles/october/read.aspx?m=828

仅显示 的物品/ 10月/ read.aspx
作为“restofurl”的价值 我不需要经典网址获取params assignet到任何东西,只是希望它们是 restofurl 变量的一部分。

1 个答案:

答案 0 :(得分:1)

我会自己回答这个问题。

var restofurl =
String.Format("{0}?{1}", RouteData.Values["other"], Request.QueryString);

将有效地构建正确的URL。如果您碰巧找到了“更干净/更好”的方式,请发帖。