わかりました、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としてレンダリングさせるにはどうすればよいですか?または、これを達成するためのはるかに簡単な方法はありますか?
乾杯!
@Html.Raw()
の使用は誰もが正しいのですが、あなたのサイトがXSS脆弱性の影響を受けやすくなる可能性があるため、これに注意する必要があることを指摘したいと思います。
@Html.Raw(ViewBag.SomeMessage)
を MicrosoftのAnti-XSS Library と組み合わせて、この脆弱性を引き起こさないようにします。
編集: Anti-XSSライブラリの利点(まだ見ていない場合)には、承認されたマークアップのホワイトリスト(<b>
、<h3>
など)。承認されたマークアップのみがエンコードされないようにします。
編集2: これが例です これがどのように行われるのか。
Raw
メソッドを使用します。
@Html.Raw(ViewBag.SomeMessage)
次のようなことができると思います。
@Html.Raw(ViewBag.SomeMessage)
@Html.Raw(ViewBag.SomeHtmlProperty)
これが言われている、ここに私の免責事項があります:ViewBagを使用しないでください。厳密に型指定されたビューとビューモデルを使用します。 ViewBag/ViewDataは、ASP.NET MVCアプリケーションにとって癌のようなものです。
データをViewBagにHTMLでエンコードされた文字列として入力します。この文字列は再度エンコードしないでください。
ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty);
次に使用する
@ViewBag.myBag
MvcHtmlStringの ドキュメント 。