2017-03-08 8 views
0

私は以下のように、Javaスクリプトでドットネーリア文字列を読む必要があります。javascriptでドットネットリソースをエスケープする

var resources = @Html.ResourceStrings("Home_General_", Resources.ResourceManager); 

上記の行である「Home_General_」リソースからの値のいくつかは、「こんにちは 『XYZのようなものです

』としてリソースキーで始まる(ドットネットリソースファイルから)すべてのリソースをレンダリングしますあなたがそこにいる "すなわち、文字列には引用符文字が含まれています。

文字列に引用符が含まれる場合、上記の呼び出しは失敗します。

この問題を回避するための1つの方法は"Hi \"XYZ\" are you there"

私はエスケープの多く(\)文字で私のリソース文字列を汚染したくないとして、我々は、これを避けることができ、他の方法などの特殊文字をエスケープです。

答えて

1

利用コード:

var resourceXYZ = '@Html.Raw(HttpUtility.JavaScriptStringEncode(Resources.ResourceManager.GetString("Home_General_XYZ")))'; 

我々は次のようにします。

  1. 我々はResources.ResourceManager.GetString()を経由してリソース文字列を取得します。
  2. 結果をHttpUtility.JavaScriptStringEncodeに渡して、JavaScriptの特殊文字をエスケープします。
  3. 結果をHtml.Raw()に渡して、Razorがこの文字列にHTMLエンコーディングを適用しないようにします。
  4. 次に、一重引用符で囲まれたテキストをページに出力します。

機能Html.ResourceStringsは、MVCの一部である標準的な機能ではありません。あなたのところの誰かがそれを書いているに違いありません。このコードを表示すると、有効なJavaScriptリテラルを返すように書き直す方法がわかります。

3

Javascript文字列リテラルとしてレンダリングするときは、任意の文字列をJavascript-Escapeする必要があります。

また、文字列リソースから外側の引用符も削除する必要があります。それはテキストでなければならず、半分有効なJavascript式ではありません。

+0

コード例はわかりやすいヘルプ – Nilesh

0

@Html.ResourcesString(...)HttpUtility.JavaScriptStringEncodeにラップすると、すべてのエスケープの問題を処理できます。単一のリソース文字列を取得するには、このような

var resources = @HttpUtility.JavaScriptStringEncode(Html.ResourceStrings("Home_General_", Resources.ResourceManager)); 
+0

Html.ResourceStrings retunr MvcHtmlStringとstringではない – Nilesh

関連する問題