2011-09-02 2 views
24

OK、ASP.Net MVCにはまったく新しいので、これは愚かな質問であれば申し訳ありませんが、HTMLとしてViewBagの値を表示するにはどうすればいいですか?私は実際にページを通常のHTMLとしてそれをレンダリング持つに行くかどうビューバックをhtmlとして表示するにはどうすればよいですか?

<h3>Test</h3><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>TEST</p>

:例えば、ViewBag.SomeMessageは、次のテキストが含まれている場合は?それともこれを実現するもっと簡単な方法がありますか?

乾杯!私はあなたがこのような何かができると思う

@Html.Raw(ViewBag.SomeMessage) 

答えて

47

誰もが@Html.Raw()を使用していますが、XSSの脆弱性に敏感なサイトになる可能性があるため、この点に注意する必要があります。

@Html.Raw(ViewBag.SomeMessage)Microsoft's Anti-XSS Libraryを組み合わせて、この脆弱性を導入しないようにします。

編集:のみ承認されるように (あなたはそれを見ていない場合)アンチXSSライブラリの利点は(..など<b><h3>、など)それが承認されたマークアップのホワイトリストを持っていますマークアップはエンコードされません。

編集2: Here's an exampleこれがどのように行われたか。

+0

+1これは良いアドバイスです。 – Tejs

+0

xssは恥知らずの自己宣伝で、反xssと他のハッキングプルーフを使用しています:http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV333 –

12

あなたはRawメソッドを使用します。これは言われている

@Html.Raw(ViewBag.SomeMessage) 
+0

くそー! hahaha – slandau

+2

好意を返す:) haha​​ – slandau

7

+0

+1 - ネメシス! = D私はすぐにMcGrawを素早く描いています。今日は推測= D – Tejs

6
@Html.Raw(ViewBag.SomeHtmlProperty) 

を、ここに私の免責事項です:ViewBagを使用しないでください。強く型付けされたビューとビューモデルを使用します。 ViewBag/ViewDataは、ASP.NET MVCアプリケーションの癌のようなものです。

1

データをViewBagにHTMLエンコードされた文字列として入力します。これは再度エンコードしないでください。

ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty); 

その後、MvcHtmlStringため

@ViewBag.myBag 

documentationを使用しています。

関連する問題