【问题标题】:How to properly encode links to external URL in MVC Razor如何在 MVC Razor 中正确编码指向外部 URL 的链接
【发布时间】:2014-05-30 10:11:35
【问题描述】:

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

我可以对我的标记进行哪些更改以使其按预期工作?

【问题讨论】:

    标签: asp.net-mvc razor html-helper


    【解决方案1】:

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

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

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

    【讨论】:

    • 您好,我从数据库字段调用 url,我需要链接。我在我的视图中调用数据@Html.DisplayFor(model =&gt; model.Announcment_Link) 我怎样才能使它成为一个链接
    • 此外,如果您从实体属性生成 href,MVC 将生成一个操作 URL,除非该地址指定了 http 协议,即:stackoverflow.com vs www.stackoverflow.com。因此,如果您想要一个外部 url,请确保您的数据中包含该 http。
    【解决方案2】:

    两种方式:

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

    例如SQL:

    update ProductTable set ProductLink='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>
    

    希望能帮助别人。

    【讨论】:

    • 当我使用 &lt;a href="http://@model.ProductLink"&gt;View&lt;/a&gt; 时,它会从 http 中删除 :
    • @touinta,某些浏览器不显示协议检查this 文章,请问您如何将示例链接存储在数据库列中?
    • @storm 在数据库中,链接字段是 varchar。其中一些使用www,其他使用www。
    • 为什么不使用http:// 存储?那么这很容易,请查看我对您的问题的回答here 并在此处发表评论。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      您需要考虑您的 RouteConfiguration。

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

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-01-10
          • 2014-01-10
          • 2016-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-26
          • 1970-01-01
          • 2016-10-10
          相关资源
          最近更新 更多