web-dev-qa-db-ja.com

ビューバッグをhtmlとして表示するにはどうすればよいですか?

わかりました、ASP.Net MVCにはまったく新しいので、これがばかげた質問であれば申し訳ありませんが、ViewBagの値をHTMLとして表示するにはどうすればよいですか。たとえば、ViewBag.SomeMessageに次のテキストが含まれている場合:

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

実際にページに通常のHTMLとしてレンダリングさせるにはどうすればよいですか?または、これを達成するためのはるかに簡単な方法はありますか?

乾杯!

27
David Archer

@Html.Raw()の使用は誰もが正しいのですが、あなたのサイトがXSS脆弱性の影響を受けやすくなる可能性があるため、これに注意する必要があることを指摘したいと思います。

@Html.Raw(ViewBag.SomeMessage)MicrosoftのAnti-XSS Library と組み合わせて、この脆弱性を引き起こさないようにします。

編集: Anti-XSSライブラリの利点(まだ見ていない場合)には、承認されたマークアップのホワイトリスト(<b><h3>など)。承認されたマークアップのみがエンコードされないようにします。

編集2: これが例です これがどのように行われるのか。

58
KallDrexx

Rawメソッドを使用します。

 @Html.Raw(ViewBag.SomeMessage)
18
Tejs

次のようなことができると思います。

@Html.Raw(ViewBag.SomeMessage)
8
slandau
@Html.Raw(ViewBag.SomeHtmlProperty)

これが言われている、ここに私の免責事項があります:ViewBagを使用しないでください。厳密に型指定されたビューとビューモデルを使用します。 ViewBag/ViewDataは、ASP.NET MVCアプリケーションにとって癌のようなものです。

7
Darin Dimitrov

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

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

次に使用する

@ViewBag.myBag

MvcHtmlStringの ドキュメント

1
Donat Sasin