Razor ViewEngine:「@」記号をエスケープするにはどうすればよいですか?


101

私はTwitter @Anywhere APIと組み合わせてASP.NET MVC3でいくつかのTwitterハンドルを出力しようとしていますが、Razorビューで「@」記号を実際にエスケープする方法を理解できませんでした。

Razorで「@」文字をエスケープするための構文を知っている人はいますか?

私が使用しようとする<text></text>と、JITエラーが発生します。


2
HTMLエンティティを使用することもできます&#64;
rsenna 2014

回答:


143

@記号をエスケープするには、@@を使用する必要があります。

注意すべき重要な点の1つは、@記号がメールアドレス内に存在する場合は、エスケープする必要がないことです。Razorはそれ自体でそれを理解するのに十分スマートでなければなりません。


4
<a href="" title="this @@ will't work"> </a>、VSの構文エラーと実行時のパーサーエラーの両方。
ティエンドゥ

1
:ここでは私のために働いた最後のHTML文字コード参照@Tien stackoverflow.com/a/13584640/84206
AaronLS

25

Twitterメタタグを追加する場合

あなたのTwitterのユーザー名は、 foobar

このようになります

<meta name="twitter:site" content=@("@foobar")>

16

CSSコードで@記号にコメントを付ける必要があり、@@だけでは機能しない場合は、次のようにします。

@("@@font-face"){ ... css ...}

1
HTMLエンティティはCSS内では役に立たないため、これが最良の方法です。
ChrisF

2

私はさらに別の奇妙なケースを持っていました:'@' + @Model.SomePropertyリンクhrefに渡してください。

このケースの最良の解決策は、同様の質問に対するこの回答で IMOに与えられました。どちら@@@:htmlコードを使用しながら、動作しませんでした&#64;物事を複雑にします。

だから、私のコードは <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery 同様にうまくいったでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.