MVC4 サンプル プロジェクトのカミソリ ビューに次のサンプル コードがあります。
<p>@((@Model == null) ? "<unknow man>" : @Model.ClientName)</p>
<p>
@if (@Model == null)
{
@Html.Encode("<unknow man>")
}
else
{
@Model.ClientName;
}
</p>
出力は私にとって少し奇妙です...
Internet Explorer では次のように表示されます。
<p><unknow man></p>
<p>&lt;unknow man&gt;</p>
Chromeの場合:
<p><unknow man></p>
<p>&lt;unknow man></p>
そして、(私にとって) 最も驚くべきことは、最終的に同じ視覚的出力が得られたことです。
<unknow man>
<unknow man>
ただし、これを HTML で表示したかったのです。
<p><unknow man></p>
<p><unknow man></p>
そしてこれをユーザーに:
<unknow man>
<unknow man>
PS
最後に、このように文字列を適切に表示する解決策を見つけました
@if (@Model == null)
{
@("<unknow man>")
}
しかし、ブラウザーの HTML.Encode の違いを誰が説明できますか? また、なぜこれが最初の例のコードのように機能しなかったのでしょうか?