DBテーブルに保存された安全な/消されたHTMLを取得しました。エスケープされていないHTML文字列の書き込み/出力
どのようにこのHTMLコンテンツをRazorビューに書き出すことができますか?
<
やアンパサンドなどの文字は、常に&
にエスケープされます。あなたのコンテンツを想定
DBテーブルに保存された安全な/消されたHTMLを取得しました。エスケープされていないHTML文字列の書き込み/出力
どのようにこのHTMLコンテンツをRazorビューに書き出すことができますか?
<
やアンパサンドなどの文字は、常に&
にエスケープされます。あなたのコンテンツを想定
は... mystring
という名前の文字列の中
です:
@Html.Raw(mystring)
代わりにあなたがHtmlString
またはIHtmlString
モデルで、または直接を実装する任意の他のタイプにあなたの文字列を変換することができますインラインで使用してください。@
:
@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString
この回答をありがとう。私が学んでいた少しの仕事を終えるのを助けました。私はMVC 3を使用していますが、Rawメソッドを正しく使用しています。 –
私はまだMVC 3を学んでいて、これは私を逃していました。 –
答えをありがとうございます!私は、MVC3の最新バージョンを使用していますが、これまでのところHtml.Rawはありません:( –
別にDommerにより示唆されるよう@MvcHtmlString.Create(ViewBag.Stuff)
を使用してから、私はそれはほとんどすべての可能なXSS攻撃の文字列をエンコードするあなたも示唆したフィルhttp://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx
としてAntiXSSライブラリを使用することをお勧めします。
ViewData["string"] = DBstring;
をしてから、このような観点でそのViewDataを呼び出す:
@Html.Raw(ViewData["string"].ToString())
ASP.NET MVCはほとんどのXSSの脆弱性を既に処理していませんか? – William
あなたは、あなたがこのようにコントローラでのViewDataにあなたの文字列を置くことができる
@{ WriteLiteral("html string"); }
WriteLiteralの+1、その1つを知らなかった –
これは私にとって最高だった、Hangfireアプリ内でRazorを使って電子メールを送信していた... 'Html.Raw() 'がそこで動作しない – shanabus
1 WriteLiteral –
を使用することができます生のhtmlを使用するのが難しい場合もあります。主にXSSの脆弱性によるものです。それが懸念されるが、未加工のhtmlを使いたい場合は、恐ろしい部分をエンコードすることができます。人々に以下の議論の長い歴史を保存するには
(<b><script>console.log('insert')</script>Hello</b>)
を
で
結果 - '@ Html.Raw()' –
動的型付けで匿名型とでこれをやろうとしている私のような人々を保存するにはこれはうまくいきません - 私のより具体的な質問に[この回答](http://stackoverflow.com/a/31306368/957950)を参照してください。あなたの状況が許せば、強く型付けされたビューでこのアプローチを使用することはなお良いですが。 – brichins