2016-05-16 23 views
1

Webプロジェクトでリソースファイルを使用しています。時には、htmlエンコードされた文字やアストストロフィがアクセントになっていることもあります。C#Mvcアクセント記号付きのレックスエスケープの問題

ので、代わりのこの

Errore: non c'è nessun itemKey definito. L'esecuzione della pagina verrà interrotta.. 

は私が見るこの

Errore: non c'è nessun itemKey definito. L'esecuzione della pagina verrà interrotta.. 

私はHtml.Raw()は、トリックを行うことができます知っているが、Webの設定で設定することができ、いくつかのオプションがある場合、私は思っていましたデフォルトのエスケープをスキップするには?そうでなければ私はどこでも

私は資源をこのように追加Html.Raw()を追加することを余儀なくされます:リソース文字列をデバッグするときが正しく取得されますので、

@(WmXRexManager.WebResxManager.GetString<SharedVerificationResx>(
    () => SharedVerificationResx.ErrorNoItemKey)); 

WebResxManagerGetString<T>()方法は無関係です。

+0

ソースコードを追加する必要があります – devio

+0

しかし、実際にはHTMLでエスケープする必要があります。テキストがJavaScript用である場合は異なります。この場合、エスケープする必要がありますが、HTML用ではなくJavaScript用です。 「ASP.NETからのJavaScript特殊文字のエスケープ」(http://stackoverflow.com/a/27545730/1207195) –

答えて

2

これは明示的に述べていませんが、文字列がエスケープされているコンテキストを知りたいと思っていました。

この式を通常のHTMLコンテンツとして使用すると、変換は正しく行われます。 (ただし、セミコロンは必要ありません)

JS内の文字列をレンダリングするとエラーメッセージが出力されることが想定されています.HTMLを区別する必要がありますエンコーディングとJavaScriptエンコーディングをサポートしています。

私は単に@Html.JSString(stringValue)を書き、JavaScriptの文字列は(もちろん、JSの文字列の引用符内)エスケープ持つことができますHtmlHelperの拡張メソッド

public static IHtmlString JsString<TModel>(this HtmlHelper<TModel> html, string s) 
    { 
     return html.Raw(HttpUtility.JavaScriptStringEncode(s)); 
    } 

を使用しています。

+0

これは、コントローラからのajaxエラーメッセージで発生します。私はあなたのソリューションをテストしています、私は質問 – Phate01

+0

を更新します!しかし、このように私はすべてのリソースをjavascriptコードに編集する必要があります。それはデフォルトの種類の方法はありますか? – Phate01

+1

'WebResxManager.GetString()'がJSエラーメッセージに対してのみ使用されている場合は、エンコーディングをそこに置きます。または、GetJSString()メソッドを追加します。メソッドがIHtmlStringを返す場合、MVCはそれ以上のエンコーディングを行わずに直接結果を渡します。 – devio

関連する問題