URL MVC3 в качестве параметра - PullRequest
0 голосов
/ 28 июня 2011

Я хочу создать приложение MVC, которое получает URL в качестве параметра.Как этого добиться?

  1. Получить параметр непосредственно по URL-адресу?
  2. Создать методы Get и Post, передающие внутренний URL-адрес из Get-to-Post?

Я попробовал первый вариант, но все еще не могу получить URL-адреса, такие как http://website/controller/method/http://otherurl.com

Нужно ли создавать новый маршрут для достижения этого?

Спасибо всем.

Ответы [ 3 ]

2 голосов
/ 28 июня 2011

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

http://website/controller/method?url=http%3A%2F%2Fotherurl.com

и внутри действия:

public ActionResult Method(string url)
{
    // The url parameter here will equal to "http://otherurl.com"
    ...
}
0 голосов
/ 28 июня 2011

Вы должны будете создать другой маршрут, например:

routes.MapRoute( "UrlByParam", //Route Name
"{controller}/{action}/{url}", //Url Pattern
new { controller = "DefaultController", action = "DefaultAction" }); //Defaults

И вам также нужно закодировать ваш URL, чтобы

http://website/controller/method/http://otherurl.com

стало

http://website/controller/method/http%3A%2F%2Fotherurl.com
0 голосов
/ 28 июня 2011

URL-адреса состоят из двух частей: первая часть - это домен (я думаю), а здесь важна вторая, которая называется строкой запроса. (1-я часть обязательна, 2-я нет).

это пример:

http://your-domain-here/stuff?page=1

Теперь page - переменная строки запроса. Вы должны заметить ?, который разделяет две части URL, я не вижу ни одной в вашем URL, поэтому IMO, механизм маршрутизации MVC попытается сопоставить весь этот URL с зарегистрированным маршрутом (который не найден ).

Нет, я бы сказал, вам не нужно создавать новый маршрут, новые маршруты создаются, когда нам нужен новый «Путь», но в вашем случае вам нужно только улучшить URL, чтобы отделить маршрут от строки запроса.

Надеюсь, это поможет.

...