2017-01-22 6 views
0

MVC Webアプリケーションで作業しています。私は剃刀とJavaScriptのページミックスを持っています。Htmlエンコーディングの使用法を理解できません。

レイザー:

@{ 
    ViewBag.Title = "Edit"; 
    string initialImage = "<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>"; 
} 

はJavaScript:

<script type="text/javascript"> 
    $("#Photos").fileinput({ 
     initialPreview: [@initialImage], 

私が欲しいものがある:

<script type="text/javascript"> 
    $("#Photos").fileinput({ 
     initialPreview: ["<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>"], 

私は(ソースビューで)を取得することです:

<script type="text/javascript"> 
    $("#Photos").fileinput({ 
     initialPreview: [&lt;img src=&#39;/Site_Data/BIO/Bio.jpg&#39; title=&#39;BIO&#39;&gt;], 

私は(レイザーとJavaScriptの両方のセクションに)HtmlEncodeとHtmlDecodeの多くの組み合わせを試してみましたが、それを把握することができませんでした。 お知らせください。ありがとうございました!

+0

を必要なだけHtml.Raw(initialImage)@を使用 – Fals

+0

あなたは正しかったです。 – FLICKER

答えて

1

デフォルトでは、asp.net mvcはあなたの文字列をエンコードします。エンコードされていない文字列を使用することがHtml.Raw(文字列)を使用します。

<script type="text/javascript"> 
    $("#Photos").fileinput({ 
     initialPreview: ["@Html.Raw(initialImage)"], 
+0

動作しません。私はエラーが発生します: "暗黙のうちに 'System.Web.IHtmlString'を 'string'に変換することはできません。 .ToString()を使用していて、無効な文字が残っています – FLICKER

+0

が応答を編集しました。間違った場所でHtml.Rawを使用しました – dexter

+0

私はそれが問題かもしれないと推測していました:)また、@ Html.Raw(initialImage)を二重引用符で囲む必要があります。私はあなたの答えを編集する。とにかくありがとうございました。 – FLICKER

1

Html.Rawはそう

@Html.Raw(initialImage); 

としてレンダリングされます 、それは任意のHTMLエンコードを行うことなく、与えられたものをレンダリングします

<script type="text/javascript"> 
    $("#Photos").fileinput({ 
     initialPreview: ["@Html.Raw(initialImage)"], 
012:あなたのJSで
<img src='/Site_Data/BIO/Bio.jpg' title='BIO'> 

あなただけダブルクォートでそれをエンコードする必要があります

しかし、あなたがそのようなViewBag.Something = "&gt;";としてそこに文字、その生のバージョンをエンコードしているとき、バック、実際のHTMLに取得するには&gt;.であるあなたは

Html.Raw(HttpUtility.HtmlDecode(EncodedContent)); 
+0

説明をありがとう – FLICKER