web-dev-qa-db-ja.com

かみそりビューエンジンで@文字をエスケープする

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

CS0103:名前 'test'は現在のコンテキストには存在しません

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

514
ajay_whiz

@@はそれをするべきです。

822

かみそり@エスケープ文字をシンボルに...

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

または

<img src="..." alt="Find me on Twitter as @("@")username" />
133
Emre Karahan

<text></text>またはもっと簡単な方法@:を使う

36
Kasper Skov

すべてのケースで@@がエスケープするわけではないので、@Html.Raw("@")@@よりもさらに信頼性があるように私には思えます。

したがって:

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

だろう:

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

HTMLエンティティの代わりに、私は@ Html.Raw( "@")の使用を好む

17
CLRBTH

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

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

12
Alfamale

@RazorCodePart1 @@ @RazorCodePart2に関する質問は、次の順序で行う必要があります。

@RazorCodePart1 @:@@ @RazorCodePart2

私は知っている、それは少し奇妙に見えるが、それは動作し、あなたにコードブロック間のリテラル文字 '@'を与える​​でしょう。

8
DragonDTG

私はちょうど同じ問題を抱えていました。テキストを@で囲むように変数を宣言しました。

@{
   var twitterSite = "@MyTwitterSite";
}

...

<meta name="Twitter:site" content="@twitterSite">
6
watfy

私にとってこの作品

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

それともあなたが使用することができます:@@ Alan_van_Buuren

:D

3
Alan

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

@{
    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はそれでクールでした。

1

この目的のために@@を使うことができます。 var email = firstName + '\@@' + domain;のように

1

cSHTMLファイルに変数を追加するだけですvar myVariable = @"@"; </code>

そしてそれをあなたのレイアウトに追加します<span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span> </code>

1
Speedyjet

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

例:testにvalue、すなわち@ {var test = "ABC"}が割り当てられている場合、@ testはHTML部分のcshtmlページであるため、設定によって値を取得できます。それ以外の場合は、@ Html.DisplayName( "test")として単純に使用します。

0
Pavithra

私はこれらのいずれも私のプレースホルダー属性の中で動作させることができなかったので、私は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

0
Terje Solem