ASP.NET MVC ловит остальную часть маршрута по URL - PullRequest
0 голосов
/ 27 января 2011

Я хотел бы узнать, как сделать маршрут "перехватить отдых" в ASP.NET MVC?
Мне нужно взять отформатированные URL-адреса, прочитать некоторые данные до их значений, взять оставшуюся часть ссылки и СОХРАНИТЬ ее в некоторую переменную, чтобы я мог прочитать ее позже и сгенерировать ссылку.
blog.mydomain.com/linker/process/2612010/2828/en/articles/october/asking-the-overflow/madd.aspx

читать как:
memberid = 2612010
членство = 2828
язык = ru
restofurl = "статьи / октябрь / вопрос переполнения / madd.aspx"


или по этой ссылке: blog.mydomain.com/linker/process/2612010/2828/ru/articles/october/read.aspx?m=828

читать как:

memberid = 2612010
членство = 2828
язык = en
restofurl = "статьи / октябрь / read.aspx? m = 828"


или

blog.mydomain.com / линкер / процесс / 2612010/2828 / EN / статьи
чтобы:
memberid = 2612010
членство = 2828
язык = ru
restofurl = "статьи"


Я рассмотрел что-то вроде:

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

и отображает только статьи / октябрь / read.aspx
в качестве значения restofurl.
Мне не нужен классический URL-адрес get для присвоения параметров, просто хочу, чтобы они были частью переменной restofurl .

1 Ответ

1 голос
/ 27 января 2011

Я отвечу на это сам.

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

Эффективно создаст правильный URL.Если вам случится найти более «чистый / приятный» способ сделать это, пожалуйста, напишите.

...