web-dev-qa-db-ja.com

MVC Razorで外部URLへのリンクを正しくエンコードする方法

このビューは、それぞれが外部URLを指しているハイパーリンクのリストを表示することを想定しています。目標は、ユーザーがこれらのリンクの1つをクリックして、選択したURLで新しいタブをブラウザーに開くようにすることです。現在、私は次のマークアップを持っています:

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

このマークアップは以下を生成します:

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

の代わりに :

http://subdomain.mydomain.com/SomeSite

これを期待どおりに機能させるために、マークアップで何を変更できますか?

16
Eugene Goldberg

そのために@Html.ActionLinkを使用する必要はありません。単純なAタグを使用するだけです。

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

Html.ActionLinkは、MVCコントローラーで定義されたアクションへのリンクを生成するためのものです同じアプリ内。絶対URLにリンクしているため、Html.ActionLinkが提供する機能は必要ありません。

34
rossipedia

二通り :

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>

誰かが役に立てば幸いです。

8
shaijut

RouteConfigurationを考慮する必要があります。

route.MapRoute(name: "Default"、url: "{controller}/{action}"

リダイレクトするリンク全体としてアクションリンクを指定しているためです。 @rossipediaの回答を使用することをお勧めします。リンク内にスパンを配置するなど、トリッキーなことを行うことができるからです。

0
Zinov

インデックスページでクリック可能なリンクを表示します

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

ViewBagは過度に使用されており、ほとんどの場合最良の選択ではありませんが、これは、動的に変化する特定のクエリ文字列パラメーターを使用してリダイレクトする必要があるURLをすばやく修正するために他の誰かのmvcアプリを継承するときに行っていたものです

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