255

Razor はデフォルトで文字列をエンコードします。エンコードせずにレンダリングするための特別な構文はありますか?

4

8 に答える 8

389

ASP.NET MVC 3 以降、以下を使用できます。

@Html.Raw(myString)
于 2010-12-21T17:53:01.103 に答える
61
@(new HtmlString(myString))
于 2010-11-01T17:53:37.480 に答える
35

前述の @Html.Raw(string) アプローチと同様に、MvcHtmlString を出力するとエンコードされません。これは、独自の拡張機能を HtmlHelper に追加する場合や、html が含まれている可能性があることがわかっているビュー モデルから値を返す場合に役立ちます。

たとえば、ビュー モデルが次の場合:

public class SampleViewModel
{
  public string SampleString { get; set; }
  public MvcHtmlString SampleHtmlString { get; set; }
}

Core 1.0+ (および MVC 5+) の場合、HtmlString を使用します

public class SampleViewModel
{
  public string SampleString { get; set; }
  public HtmlString SampleHtmlString { get; set; }
}

それから

<!-- this will be encoded -->
<div>@Model.SampleString</div>
<!-- this will not be encoded -->
<div>@Html.Raw(Model.SampleString)</div>
<!-- this will not be encoded either -->
<div>@Model.SampleHtmlString</div>
于 2011-06-29T08:05:06.177 に答える
11

@Html.Raw()エンコーディングとセキュリティでさらに問題が発生する可能性があるため、注意して使用してください。私はこれを自分でしなければならなかったのでユースケースを理解していますが、慎重に... すべてのテキストを通過させないようにしてください。たとえば、特定の文字シーケンスのみを保存/変換し、残りは常にエンコードします。

@Html.Raw(Html.Encode(myString).Replace("\n", "<br/>"))

そうすれば、潜在的なセキュリティ ホールが作成されておらず、すべてのブラウザで特殊文字や外国文字が正しく表示されるという安心感が得られます。

于 2015-04-06T21:43:45.407 に答える
1

HTML RAW :

@Html.Raw(yourString)
于 2016-11-03T21:05:24.257 に答える