Передать URL как параметр get? - PullRequest
6 голосов
/ 09 декабря 2008

Я пытаюсь передать URL в качестве параметра в метод get. Я определил маршрут, который принимает параметр {* url}, чтобы я мог отправлять символы "/" без разделения моего параметра. Как только в URL появляется «:» (например, в http: или localhost: 3857), метод никогда не срабатывает.

Метод Html.ActionLink экранирует сам свой параметр, но, похоже, не экранирует ':'. Я не могу избежать этого вручную, потому что тогда экранирующие символы экранируются тем же методом Html.Actionlink.

есть идеи?

Ответы [ 3 ]

3 голосов
/ 09 декабря 2008

Используйте EncodeUrl перед тем, как передать его, а затем декодируйте его на другой стороне.

1 голос
/ 01 февраля 2011

Я столкнулся с той же проблемой. В итоге я удалил Html.ActionLink и заменил его на:

<a href="Movies?id=@item.ID">@item.Title</a>

@item.ID - это URL, возвращенный из API Netflix, пример http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357. Теперь мой URL выглядит следующим образом - / Home / Movies? Id = http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357,, и я просто использовал Request.QueryString, чтобы получить значение в контроллере:

Request.QueryString.Get("id")

Возможно, не идеально, но пока работает.

0 голосов
/ 26 декабря 2008

Это что-то вроде хака, но вы можете заменить ':' на '% 3A' (это экранированная форма) и посмотреть, что с ним делает ActionLink. Если он снова будет экранирован, вам придется заменить дважды экранированную версию обратно на «:» на сервере, в противном случае просто замените «% 3A» на «:»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...