Не может закодировать косую черту в URL - PullRequest
2 голосов
/ 26 сентября 2011

http://myhost/MyController/DoSomething/Anything%252fAnything неверный запрос

http://myhost/MyController/DoSomething/Anything%2fAnything совпадает с http://myhost/MyController/DoSomething/Anything/Anything

Какой URL отправляет строку "Anything/Anything" на мой контроллер?

Как заставить Html.ActionLink генерировать этот URL?

РЕДАКТИРОВАТЬ: Он должен быть в состоянии обрабатывать "Anything/Anything/Anything/Anything....../Anything" также

Я использую MVC 3.

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

Если вы хотите определить маршрут, который определяет маршруты переменной длины, вы можете использовать этот вид определения:

routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });

Поместите его перед другими определениями маршрута в вашем global.asax.cs

0 голосов
/ 26 сентября 2011

Маршрутизатор хочет справиться со слэшем. Поэтому добавьте правило маршрутизации, например

url = [controller]/[action]/[id1]/[id2]

См. сообщение

Или используйте URL-адреса, такие как

http://myhost/MyController/DoSomething/Anything?id2=Anything

Может быть возможно обработать по умолчанию - но в этом случае правила для других маршрутов должны явно НЕ совпадать с именем вашего контроллера / действия. В противном случае будет применяться предыдущее правило.

Также может быть , что весь URL-адрес доступен из системной переменной. Ваш контроллер вызывается вообще?

...