Asp.net mvc 如何在MVC Razor中正确编码指向外部URL的链接

Asp.net mvc 如何在MVC Razor中正确编码指向外部URL的链接,asp.net-mvc,razor,html-helper,Asp.net Mvc,Razor,Html Helper,该视图假设显示一个超链接列表,每个超链接指向一个外部URL。目标是让用户单击其中一个链接,并让其浏览器打开带有选定URL的新选项卡。 目前我有以下标记: @Html.ActionLink("SomeSite", "http://subdomain.mydomain.com/SomeSite") 此标记生成: http://localhost:58980/AccessInstance/http%3a/subdomain.mydomain.com/SomeSite 而不是: http://sub

该视图假设显示一个超链接列表,每个超链接指向一个外部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

我可以在我的标记中更改什么以使其按预期工作?

您不需要为此使用
@Html.ActionLink
。只需使用简单的a标记:

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


Html.ActionLink
专门用于在同一应用程序中生成指向MVC控制器中定义的操作的链接。由于您正在链接到一个绝对URL,因此不需要
Html.ActionLink
提供的任何功能。

您需要考虑您的路由配置

routes.MapRoute( 名称:“默认”, url:“{controller}/{action}”

因为您将操作链接指定为要重定向的整个链接。 我建议您使用@rossipedia答案,因为您可以通过两种方式进行一些棘手的操作,例如在链接中添加一个跨距:

1.使用完整链接更新数据库列:

例如SQL
SQL

update ProductTable set ProductLink='http://www.example.com/Product/Mobiles' where ID=123
在asp mvc视图中

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

希望对某些人有帮助。

虽然ViewBag被过度使用,而且在大多数情况下都不是最佳选择,但这是我在继承其他人的mvc应用程序时所做的一件事,即使用特定的动态更改的querystring参数对需要重定向到的URL进行快速修复

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

此处显示可在索引页中单击的链接

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

@Html.ActionLink(item.FileName,“../Uploads/catalog/”+item.FileName)

Hello我从数据库字段调用url,需要链接。我在视图中调用数据
@Html.DisplayFor(model=>model.Announcment\u link)
如何使其成为链接另外,如果您从实体属性生成href,MVC将生成一个操作URL,除非该地址指定了http协议,即:vs www.stackoverflow.com。因此,如果您想要外部URL,请确保您在数据中获得了该http。当我使用
时,它会删除:fromhttp@touinta,有些浏览器没有显示协议检查文章,我可以知道你是如何在数据库列中存储示例链接的吗?@storm在数据库中的链接字段是varchar。其中一些是与一起的,另一些是与www一起的。你为什么不使用
http://
来存储呢?那么就很容易了,请检查我的答案以了解你的问题并在那里发表评论。
     <td>         
        @Html.ActionLink(item.FileName, "../Uploads/Catalogue/"+item.FileName)
    </td>