21

これはとても単純なようで、恥ずかしいことです。ただし、最初の質問は、MVC 3.0(Razor)の新しいViewBagからJavaScriptブロックに値を渡す場合ですが、これは正しい方法ですか?さらに重要なことに、適切な文字列置換コードをどこでどのように適用して、以下の結果のアラートのように一重引用符が&#39になるのを防ぎますか?

これを単一のスクリプトブロックに追加します。

alert('@ViewBag.str')   // "Hi, how's it going?"

次のアラートが発生します。

ここに画像の説明を入力してください

4

2 に答える 2

38

Razor はすべてを HTML エンコードするため、 ' が にエンコードされないようにするには'、次を使用できます。

alert('@Html.Raw(ViewBag.str)');

ただし、文字列の途中に実際の ' が含まれているため、javascript エラーが発生します。これを回避するには、アラート文字列を (一重引用符ではなく) 二重引用符で囲むか、' 文字をエスケープします。したがって、コントローラーには次のようになります

ViewBag.str = "Hi, how\\'s it going?";
于 2011-04-22T00:28:20.773 に答える