2013-03-07 26 views
14

私はHTML文字列を含むプロパティのコンテンツを持つモデルを持っています。Razor(スタンドアロン)でエスケープするHTMLを防ぐ方法は?

var model = new { Content = ... } 
Razor.Parse(templateBody, model) 

スタンドアロンRazorを使用してこの文字列をレンダリングする方法を教えてください。

私が試した:

@(new HtmlString(Model.Content)) 

とも

@(HttpUtility.HtmlDecode(Model.Content)) 

Model.Contentは常にHTMLエスケープレンダリングします。

+2

あなたはSO答えにこれを見たことがありますか? http://stackoverflow.com/a/4973743/195550 –

+2

'@(新しいHtmlString(Model.Content))'はこのトリックを行うべきです... '@((IHtmlString)new HtmlString(Model.Content )) ' – nemesv

+0

これは動作しません。私はWebプロジェクトの外にHtmlHelperを持っていません。 – Exta

答えて

15

を動作するはずです。テンプレートベースクラス上の簡単なヘルパーメソッドを使用します。

@Raw("<script>alert('!');</script>") 

テンプレートの先頭に次の行を追加します。IntelliSenseのあなたを与えるためにVSとReSharperのを説得するには:

@inherits RazorEngine.Templating.TemplateBase 
+0

これは、実際にはIHtmlStringを使用しないと迷惑に思っています。 – rossisdead

32

これは、特別な "-エスケープしていない - 私を" タイプがRazorEngine.Text.IEncodedStringあるRazorEngineライブラリでHtml.Raw(Model.Content)

関連する問題