web-dev-qa-db-ja.com

MVC 4-Razor-href URLに変数を渡します

変数をURLに渡すにはどうすればよいですか?

私がしようとしているのはこれですが、これは機能していません。 URLはこれを示しています:

http://myurltest.comおよびフルパスではありません

@if(check1 != "d")
{    
    <li>
        <div class="a"></div>
    </li>
    <li>
        <div class="b"></div>
    </li>
    <li>
        <a href="http://myurltest.com/" + @check1 + "/go/5/true">
        <div class="c"></div>
        </a>
    </li>
}
30
user2232273

このような:

<a href='@string.Format("http://myurltest.com/{0}/go/5/true", check1)'>

ポイントは、マークアップ部分とコード部分を組み合わせるのではなく、URL全体をマークアップに挿入することです。

73
Andrei

あなたのウェブサイト/アプリのアクションを指している場合は、使用する必要があります

_@Url.Action(your parameters)
_

href属性内。

完全なリンクを生成することもできます

_@Html.ActionLink(your parameters)
_

これらはオーバーロードされたメソッドであり、Intellisenseまたはgoogleはすべての可能な代替手段を説明します。

通常、同じWebサイトのアクションへのリンクの場合、これらのメソッドは、提案される_"http://myurltest.com/@check1/go/5/true"_のようなURL文字列を操作するよりも優れています。ローカルマシン(ベースURLはlocalhost:someport)で使用でき、_"@check1/go/5/true"_(相対パス)展開時のURLの不一致を回避するため。

一方、リンクが外部リソースを指している場合は、提案されている_<a href="http://myurltest.com/@check1/go/5/true">_のようなもので問題ありません。

ごきげんよう、

アルベルト

8
Alberto

C#6での文字列補間の使用

<a href="@($"http://myurltest.com/{check1}/go/5/true")" >

Wiki

コンピュータープログラミングでは、文字列補間または変数補間(変数置換または変数拡張)は、1つ以上のプレースホルダーを含む文字列リテラルを評価するプロセスであり、プレースホルダーが対応する値で置き換えられた結果をもたらします。これは、単純なテンプレート処理の形式です。 2 、または正式な用語では、準クォーテーション(または論理置換解釈)の形式です。文字列の補間により、文字列の連結と比較して、より簡単で直感的な文字列の書式設定とコンテンツ仕様が可能になります。

[〜#〜] msdn [〜#〜]

7
brykneval

これを試してみてください

  <a href="http://myurltest.com/@check1/go/5/true">
6
Nilesh Gajare

これを試して:

<a href="@Url.Content("~/id?" + check1)">click here</a>
5