#c# #asp.net-mvc #asp.net-mvc-4 #asp.net-web-api #.net-4.5
#c# #asp.net-mvc #asp.net-mvc-4 #asp.net-web-api #.net-4.5
Вопрос:
Я хочу, чтобы пользователь был перенаправлен на определенный URL. В моем случае www.madhu.co.in
.
Мое действие контроллера выглядит следующим образом:
[HttpPost]
public ActionResult Redirec()
{
return Redirect("www.madhu.co.in");
}
Я вызываю это с помощью httpPost
вызова.
Вызывающий веб-сайт является http://localhost/home
.
После вызова этого метода MVC пытается перенаправить на http://localhost/home/www.madhu.co.in
.
Это очень странно.
Почему MVC добавляет мой внешний URL к базовому URL?
Однако, когда я переопределяю метод, чтобы он содержал a http://
, MVC перенаправляет на http://www.madhu.co.in
.
[HttpPost]
public ActionResult Redirec()
{
return Redirect("http://www.madhu.co.in");
}
Почему это несоответствие? Должен ли я всегда ставить перед URL префикс http://
для перенаправления на новую страницу? Если нет, он перенаправит на action method
внутри контроллера?
Явно запутался. Есть идеи?
Комментарии:
1. ДА. У вас должно быть
http://
илиhttps://
2. Если нет, это должно выдать ошибку, верно? Почему он добавляет
external url
к моему базовому URL?3. потому что это не абсолютный URL.
4. @DanielA. Уайт: Хорошо, теперь я понял .. Относительные URL-адреса всегда будут сопоставляться с любыми действиями контроллера… Спасибо
Ответ №1:
Любой URL, у которого нет протокола ( http://
) или косой черты ( /
), считается относительным URL. Не имеет значения, начинается ли он с www
, это просто считается произвольным поддоменом.
Поскольку он считается относительным, он добавляется к началу конца вашего существующего URL. Итак, чтобы перенаправить с сайта, вам нужен полный абсолютный URL.
Комментарии:
1. Спасибо. Теперь в этом есть смысл.