2012-07-25 4 views
9

私はStringをビューに作成し、それを画面に出力します。MVC Razor - 画面上にテキストをインポジションに出力する

最初はResponse.Writeを試しましたが、このサイトの他の場所で説明されている理由により、ページ上部にコンテンツが表示されました。私は次に@を使って文字列を出力しようとしました:@myString

これは、適切な場所にテキストを出力するという点では機能しましたが、そこに配置したHTMLリンクをエスケープしました。この問題を回避するにはどうすればよいですか?

+0

あなたが回答として回答をマークするまでは、同じ返信をもっとたくさん得ようとします。 – VJAI

答えて

18

あなたはHtml.Raw()を使用することができます。

あなたが例えばこの

ためHtml.Raw機能を使用することができます

@Html.Raw(MyStringVar) 
+0

答えをありがとう。これは私に問題を解決するのを助けました:) –

3

代わりの文字列あなたが使用したいと思うでしょう:

@{ 
    var myString = new MvcHtmlString("<tags>Text</tags>"); 
} 

インラインそれをレンダリングするときに:

@myString 

それは代わりにエスケープ文字の正しい値を表示します。

編集:オルタナティブ

他のオプションは、それが適切にレンダリングするので、あなただけのMvcHtmlStringをインラインで作成することができます。

@(new MvcHtmlString(myString)) 
+2

またはさらに良い '@ MvcHtmlString.Create(myString)' – Silvermind

+0

@Silvermind 'MvcHtmlString.Create'は' new MvcHtmlString' ...しかし、Razorビューでは構文がより洗練されたものになることに同意しました。 https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/MvcHtmlString.cs#L22 –

3

@Html.Raw(Model.YourString) 
2

あなたはこのようにそれを行うことができます:

@Html.Raw(myString) 
3

@modelののmyString

@ Html.Raw(モデル)

@ Html.Raw(のmyString)を試してみてください。

私はこれを行うことはお勧めしません。さまざまな理由でhtml出力を画面に送信しません。画面の特定の部分にテキストを配置する場合は、ビューでhtml/cssスタイリングを使用し、出力のみを送信します。

+0

HTMLを画面にまっすぐに送りたいHTMLヘルパーに基づくユーザーコントロールのようなインスタンスがあります。一般的に私はあなたに同意するだろうが、私が作業している現在のアーキテクチャでは、基本ユーザコントロールと直接HTMLレンダリングのための巨大なニーズがあります。ですから、インラインHTMLをレンダリングしたいと思って他の誰かを判断するのが少し遅くなります(この質問に対してこのタスクを実行するより良い方法がありますが、なぜ彼らはそれを行う必要があるのか​​を知っています)。 – VulgarBinary

関連する問題