2011-07-06 18 views
3

データベースのデータに基づいて、ビュー内に文字列の配列を渡す必要があります。だから私は、コントローラでこのコードを持っている:我々はblobfileをフィールドとBlobFilesコレクションの両方を持っている理由ASP .NET MVC3 ViewBagサニタイズ文字列

 string top_six_string = "["; 
     foreach (ObjectModel om in collection) 
     { 
      myProject.Models.BlobFile file = null; 
      if (om.BlobFile != null) 
      { 
       file = om.BlobFile; 
      } 
      else if (om.BlobFiles.Count != 0) 
      { 
       file = om.BlobFiles.First(); 
      } 
      if (file != null) 
      { 
       top_six_string += " \"" + file.BlobFileID + "\","; 
      } 
     } 
     top_six_string = top_six_string.TrimEnd(','); 
     top_six_string += "]"; 
     ViewBag.TopSixList = top_six_string; 

、私は特に理解していないが、それはその時点ではありません。ポイントは、デバッグは、私が望む文字列(["25"、 "21"、 "61"、 "59"]の形式)を正確に取得することを示しています。だから、

[ "25", "21", "61", "59"] 

しかし、JavaScriptを実行しているとき、私は「予期しない文字&」、と少しソース閲覧Chromeでの混乱エラーを得たが、文字列は次のように探して出てきたことを学ぶために私を導きました私の前提は、ViewBagは の表示のHTMLに渡された文字列を消毒しているが、明らかにそれは私の心配ではない。私は私の前提で正しいですか?この情報を見るために別の方法がありますか?後で文字列を引用符に戻すことができますか?

+0

@それは最初にそれらを消毒せずに自分のサイトに、生の文字列を送信するために悪い考えです。悪意のあるユーザーがJavaScriptを使用して自分のデータを送信し、サイトをハックする可能性があります。注意してください。 –

答えて

7

ビューはViewBagの内容をビューに出力するときに発生する可能性が最も高いです。デフォルトでは、Htmlヘルパーは、注入攻撃から保護するために出力を消毒します。あなたのビューで値を出力するときに何をしたい

はこれです:Html.Raw(ViewBag.TopSixList)

+0

チャームのように働いた!ありがとう! –

+0

@ chris-dale - 素晴らしい!それを他人が見つけることができるように答えたものとしてマークすることを忘れないでください。 :) – Tridus

関連する問題