30

OK、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としてレンダリングさせるにはどうすればよいですか?それとも、私が完全に見逃している、これを達成するためのはるかに簡単な方法はありますか?

乾杯!

4

5 に答える 5

62

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

@Html.Raw(ViewBag.SomeMessage)Microsoft の Anti-XSS Libraryと組み合わせて、これから脆弱性が持ち込まれないようにします。

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

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

于 2011-09-02T15:38:35.673 に答える
19

Raw次の方法を使用します。

 @Html.Raw(ViewBag.SomeMessage)
于 2011-09-02T15:34:35.967 に答える
9

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

@Html.Raw(ViewBag.SomeMessage)
于 2011-09-02T15:34:40.647 に答える
8
@Html.Raw(ViewBag.SomeHtmlProperty)

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

于 2011-09-02T15:34:50.243 に答える
3

再度エンコードしてはならない HTML エンコード文字列として ViewBag にデータを配置します。

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

次に使用します

@ViewBag.myBag

MvcHtmlStringのドキュメント。

于 2016-12-15T13:45:52.617 に答える