Как я могу передать URL-адрес в качестве переменной в строке запроса на мой контроллер? - PullRequest
0 голосов
/ 09 апреля 2009

Я пытаюсь передать URL в качестве параметра моему контроллеру следующим образом:

//Passed in via url like this: 
//http://www.mydomain.com/Puzzle/ContinuePuzzle/{insert url here}
public ActionResult ContinuePuzzle(string url)
{
    return View("PuzzleWrapper", 
                 (object)_PuzzleService.ContinuePuzzle(url);
}

Всякий раз, когда я пытаюсь это сделать, я получаю ошибку http 400 Bad Request. Я пробовал UrlEncoding, но все равно это не нравится. Есть предложения?

Ответы [ 3 ]

3 голосов
/ 09 апреля 2009

У меня есть подозрение, что из-за двух объявлений схемы в URL-адресе обработчик маршрута по умолчанию выбрасывает ответ 400.

В качестве обходного пути я просто отправил бы URL без схемы (т. Е. http://). Я протестировал этот сценарий без проблем:

http://www.mydomain.com/Puzzle/ContinuePuzzle/www.domain.com/nextpuzzle

Используя этот маршрут:

routes.MapRoute("Puzzle", "Puzzle/ContinuePuzzle/{*url}", new {controller = "Puzzle", action = "ContinuePuzzle", url = ""});

Если вам нужна схема, используйте параметр строки запроса, как предложил Чарлино.

0 голосов
/ 09 апреля 2009

UrlEncode, но передать его как переменную get ...?

например. http://www.mydomain.com/Puzzle/ContinuePuzzle?url=http%3a%2f%2fmypuzzlingdomain.com%2f%3fa4

0 голосов
/ 09 апреля 2009

Что если вы поставите его в скобках?

Неверный адрес для http: // запускается по URL.

http://www.mydomain.com/Puzzle/ContinuePuzzle/(http://mypuzzlingdomain.com/?a4)

Или, возможно, скобки могут также работать.

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