Как правильно кодировать ссылки на внешний 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>