Как правильно кодировать ссылки на внешний URL в MVC Razor

Это представление предполагает отображение списка гиперссылок, каждый из которых указывает на внешний URL. Цель состоит в том, чтобы пользователь щелкнул одну из этих ссылок и открыл браузер для новой вкладки с выбранным URL. В настоящее время у меня есть следующая разметка:

@Html.ActionLink("SomeSite", "http://subdomain.mydomain.com/SomeSite")

Эта разметка создает:

http://localhost:58980/AccessInstance/http%3a/subdomain.mydomain.com/SomeSite

вместо:

http://subdomain.mydomain.com/SomeSite

Что я могу изменить в своей разметке, чтобы сделать эту работу так, как я ожидаю?

Ответ 1

Для этого вам не нужно использовать @Html.ActionLink. Просто используйте простой тег A:

<a href="http://subdomain.mydomain.com/SomeSite">SomeSite</a>

Html.ActionLink предназначен специально для генерации ссылок на действия, определенные в контроллерах MVC, в том же приложении. Поскольку вы привязываетесь к абсолютному URL-адресу, вам не нужна какая-либо функциональность, предоставляемая Html.ActionLink.

Ответ 2

Два способа:

1. обновите столбец базы данных с полной ссылкой:

eg SQL:

update ProductTable set LinkColumn='http://www.example.com/Product/Mobiles' where ID=123

В представлении asp mvc

<a href="@model.ProductLink">View</a>

2. Жесткий код http и список из модели

<a href="http://@model.ProductLink">View</a>

Надежда помогает кому-то.

Ответ 3

Вам необходимо учесть вашу RouteConfiguration.

routes.MapRoute(               name: "Default",               url: "{controller}/{action}"

потому что вы указываете ссылку действия как всю ссылку, которую вы хотите перенаправить. Я бы порекомендовал вам использовать ответ @rossipedia, потому что вы можете делать сложные вещи, например, помещать пробел в ссылку

Ответ 4

В то время как ViewBag чрезмерно используется, и не самый лучший выбор в большинстве случаев, это то, что я сделал, когда наследул приложение другого приложения mvc, чтобы быстро исправить URL-адрес, который мне нужно перенаправить, с помощью конкретной динамически изменяющейся строки запроса параметр

  <a target="_parent" href="http://localhost:56332/services/@ViewBag.factory">View Service</a>

Ответ 5

Здесь, чтобы отобразить ссылку, которую можно щелкнуть на индексной странице

     <td>         
        @Html.ActionLink(item.FileName, "../Uploads/Catalogue/"+item.FileName)
    </td>