Как перенаправить пользователя на новый веб-сайт в MVC? Перенаправление добавляет возвращаемый URL к методу контроллера

#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. Спасибо. Теперь в этом есть смысл.