如何正确编码MVC Razor中外部URL的链接

时间:2014-04-15 20:45:11

标签: 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://subdomain.mydomain.com/SomeSite

我可以在标记中更改哪些内容以使其按预期工作?

6 个答案:

答案 0 :(得分:32)

您不需要使用@Html.ActionLink。只需使用普通的A标签:

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

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

答案 1 :(得分:5)

两种方式:

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

例如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>

希望帮助某人。

答案 2 :(得分:0)

您需要考虑RouteConfiguration。

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

因为您要将操作链接指定为要重定向的整个链接。 我建议您使用@rossipedia答案,因为您可以制作棘手的事情,例如在链接中放置一个范围

答案 3 :(得分:0)

虽然ViewBag过度使用并且不是大多数时候的最佳选择,但这是我在继承其他人的mvc应用程序时快速修复我需要重定向到的网址时所做的事情。特定的动态更改查询字符串参数

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:-1)

如果您想在左上角的导航栏中添加指向外部站点的链接,该站点上会显示“注册”“登录”,您可以这样做: 在MVC5中,转到_LoginPartial.chtml并添加:

  <ul class="nav navbar-nav navbar-right">
                <li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>
                <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })
                <li> <a href="http://link/here">Redirect</a> &raquo;</li>//this will add your link
            </ul>