How to properly encode links to external URL in MVC Razor

巧了我就是萌 提交于 2019-12-18 18:53:45

问题


This view suppose to show a list of hyperlinks, each pointing to an external URL. The goal is for the user to click one of these links and have their browser open a new tab with the selected URL. Currently I have the following markup:

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

This markup produces:

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

instead of :

http://subdomain.mydomain.com/SomeSite

What can I change in my markup to make this work as I expect?


回答1:


You don't need to use @Html.ActionLink for that. Just use a plain A tag:

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

Html.ActionLink is specifically for generating links to actions defined in MVC controllers, in the same app. Since you're linking to an absolute URL, you don't need any of the functionality that Html.ActionLink provides.




回答2:


Two ways :

1. update the database column with full link:

eg SQL:

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

In asp mvc view

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

2. Hardcode the http part and list from model

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

hope helps someone.




回答3:


You need to take into account your RouteConfiguration.

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

because you are specifying the action link as the entire link that you want to redirect. I would recommend that you use the @rossipedia answer because you can make tricky things like putting a span inside the link




回答4:


While a ViewBag is overused and not the best choice most of the time this is something that I had done when inheriting someone else's mvc app to do a quick fix for a URL that I needed to redirect to with a specific dynamically changing querystring parameter

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



回答5:


Here to display link that are clickable in index page

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


来源:https://stackoverflow.com/questions/23094174/how-to-properly-encode-links-to-external-url-in-mvc-razor

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!