web-dev-qa-db-fra.com

Comment coder correctement les liens vers une URL externe dans MVC Razor

Cette vue suppose d'afficher une liste de liens hypertexte, chacun pointant vers une URL externe. L'objectif est que l'utilisateur clique sur l'un de ces liens et que son navigateur ouvre un nouvel onglet avec l'URL sélectionnée . Actuellement, j'ai le balisage suivant:

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

Ce balisage produit:

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

au lieu de :

http://subdomain.mydomain.com/SomeSite

Que puis-je changer dans mon balisage pour que cela fonctionne comme prévu?

13
Eugene Goldberg

Vous n'avez pas besoin d'utiliser @Html.ActionLink pour cela. Il suffit d'utiliser un tag A simple: 

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

Html.ActionLink permet spécifiquement de générer des liens vers des actions définies dans les contrôleurs MVC, dans la même application . Puisque vous créez un lien vers une URL absolue, vous n'avez besoin d'aucune des fonctionnalités fournies par Html.ActionLink.

31
rossipedia

Deux manières :

1. met à jour la colonne de la base de données avec le lien complet:

par exemple SQL

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

Dans asp mvc view

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

2. Coder en dur la partie http et la liste à partir du modèle

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

l'espoir aide quelqu'un.

5
stom

Vous devez prendre en compte votre RouteConfiguration.

routes.MapRoute ( name: "Par défaut", url: "{controller}/{action}"

parce que vous spécifiez le lien d'action comme étant le lien entier que vous souhaitez rediriger . Je vous recommanderais d'utiliser la réponse @rossipedia car vous pouvez faire des choses difficiles comme mettre une plage à l'intérieur du lien.

0
Zinov

Ici pour afficher les liens cliquables dans la page d'index

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

Même si un ViewBag est surutilisé et qu’il n’est pas le meilleur choix la plupart du temps, c’était quelque chose que j’avais fait lorsqu’on a hérité de l’application MVC de quelqu'un d’autre pour réparer rapidement une URL vers laquelle je devais rediriger avec un paramètre spécifique qui change dynamiquement

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