かみそりビューエンジンのエスケープ@文字


561

Razorをビューエンジンとして使用して、サンプルのASP.NET MVC 3サイトを作成しています。かみそりの構文は、@文字などで始まります@RenderBody()。私のcshtmlページに@testを書くと、解析エラーになります

CS0103:「test」という名前は現在のコンテキストに存在しません

「@」文字をエスケープするにはどうすればよいですか?


1
C#では、キーワードに@を付けて、キーワードではなく変数名として扱うことができます。私の知る限りでは、Razorで予約キーワードをこのように使用することは不可能のようです。
絶望のしかめっ面2013

1
@GrimaceofDespairキーワードを変数としてマークする方法は、2番目@を中括弧で囲むことです。私はこれを次のように書くことでなんとか機能させることができました:@(@new)
strizzwald '17 / 10/17

回答:


903

@@ それを行う必要があります。


9
この場合、これは機能しないようです。@RazorCodePart1 @@ @RazorCodePart2たとえば、2つのRazorコードスニペット間のリテラル@。
ジョシュM.

27
<text> </ text>または@を試してください:
Kasper Skov

89
最善の解決策は、@文字にHTMLエンコードされた文字列を使用することです:&#64;
2013

9
私が持っている<style>HTMLエンコードはオプションではありませんので、「@media {}」ディレクティブを埋め込むために持っている私のかみそりのページにタグを。@@のみが機能します。
Triynko、2016年

12
In href use @( "@")
Asiri Dissanayaka

145

Razor @エスケープ文字を記号に...

<img src="..." alt="Find me on twitter as @("@username")" />

または

<img src="..." alt="Find me on twitter as @("@")username" />

3
この方法は、@ media cssのものでも機能するため、最善の方法ですが、HTMLエンティティの方法はおそらく機能しません。
ChrisF 2014年

1
いいね!
どうも

1
ありがとうございます:)
Pankaj Parkar 2017

1
うまくいきました。ありがとう。
オリオン

1
このコードは誰でも簡単に理解できると
思い

39

使用<text></text>またはより簡単な方法@:


(アットマークコロン)@:奇妙なことに、ASP.NET MVC 3プロジェクトをMVC4にアップグレードしようとしているため、文字シーケンス構文が機能しません。例外: "": "はコードブロックの先頭では無効です。識別子、キーワード、コメント、"( "と" {"のみ有効です。"
Michael R

@マイケルそれは変だ。彼らは、バージョン4でそれを削除しておく必要があります
カスパーSkovの

こんにちはKasper Skovです。@:の問題は実際には@:とはまったく関係がありませんでした。@if(){}ブロックでの@Modelの不必要な使用に関連していました。修正は、モデルのアットマークを削除することでした。すでにサーバースコープ内にある場合は、@を使用しないようにする必要があります。 stackoverflow.com/questions/12809855/...
マイケル・R

38

@Html.Raw("@")@@すべてのケースで@@脱出できるわけではないので、私には、より信頼性が高いようです。

したがって:

<meta name="twitter:site" content="@twitterSite">

だろう:

<meta name="twitter:site" content="@Html.Raw("@")twitterSite">

そして、いくつかの段落を持つ巨大なテキストでこれをどのように使用しますか?私は"の代わりに`を試してみましたが、結果には疑問が文字`上の空白行が、エラーのないエラーを。。
EPurpl3

24

HTMLエンティティの代わりに、の使用を好みます@Html.Raw("@")


12

@@は、上記のRazorビューでの@のエスケープ文字です。

しかし、Razorは、 '@'が単なる '@'であり、C#(またはVB.Net)コードをマークしている場合に解決しようとします。これの主な用途の1つは、Razorビュー内で電子メールアドレスを識別することです。電子メールアドレスの@文字をエスケープする必要はありません。


Razor / VB.netとPrismjsを使用する方法が見つかりませんでした。上記すべてを<a href="@Url.Action("Edit", "Antigen", New With {Key .id = item.AntigenId})" class="btn-xs btn-primary"> Edit </で試しましたa>
JoshYates1980 2017年

8

に関する質問については@RazorCodePart1 @@ @RazorCodePart2、次のシーケンスが必要です。

@RazorCodePart1 @:@@ @RazorCodePart2

少し奇妙に見えますが、機能し、コードブロック間にリテラル文字「@」が表示されます。


7

私は同じ問題を抱えていました。@を使用してテキストを配置する変数を宣言しました。

@{
   var twitterSite = "@MyTwitterSite";
}

...

<meta name="twitter:site" content="@twitterSite">

これは私にとっては唯一の機能であり、Open Graphデバッガーに対して有効です。
シプリアン2018年

4

この仕事は私にとって

<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">

または、yoyが使用できます:@@ Alan_van_Buuren

:D



1

CSHTMLファイルに変数を追加するだけです var myVariable = @"@";

レイアウトに追加します <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>


0

上記のオプションをすべて試しましたが、どれもうまくいきませんでした。これは私がうまくいったことです:

@{
    string str = @"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$";
}

<td>Email</td>
<td>
   <input type="text" id="txtEmail" required name="email" pattern=@str /> 
</td>

私は文字列変数を作成し、すべてのRegExパターンコードをそれに渡し、次にhtmlで変数を使用しました。Razorはそれでクールでした。


0

これらをプレースホルダー属性内で機能させることができなかったため、xml特殊文字を使用しました。

<input type="text" placeholder="fex: firstname&#64;lastname.com"/>

その他の例については、こちらをご覧ください。 https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html


1
メタタグに@を追加する必要がありました。そして、これはうまくいきます。@@はそこで機能しません。
Asiri Dissanayaka

0

実際には、@は、Razor構文キーワードとともに使用するか、値をバインドする変数/モデルに対して使用する必要があります。

たとえば、testに値が割り当てられている場合、つまり@ {var test = "ABC"}の場合、@ testがHTMLパーツのcshtmlページであればどこでも、設定によって値を取得できます。それ以外の場合は、@ Html.DisplayName( "test")として簡単に使用します


0

私はこの質問が古いことを知っていますが、上記のすべてを試しましたが、URL内のASP.NETフルフレームワーク(MVC 5)で文字「@」をエスケープするのに役立ちませんでした。しかし、Terje Solemの答えに基づいて、UTF-8コード%40は私のために働きました。これは私が到達しようとしていた元のURLです。

https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js

そしてその中にコードを入れて:

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.