在Razor中使用Html.Encode

时间:2013-10-07 09:20:00

标签: .net asp.net-mvc razor

我在MVC4示例项目的剃刀视图中有以下示例代码:

<p>@((@Model == null) ? "<unknow man>" : @Model.ClientName)</p>
<p>
    @if (@Model == null)
    {
        @Html.Encode("<unknow man>")
    }
    else
    {  
        @Model.ClientName;
    }
</p>

输出对我来说有点奇怪......

Internet Explorer 中,我看到:

<p>&lt;unknow man&gt;</p>
<p>&amp;lt;unknow man&amp;gt;</p>

Chrome

<p>​<unknow man>​</p>
​<p>​&lt;unknow man&gt;</p>​

最令人难以置信的是(对我来说)最终我有相同的视觉输出:

<unknow man>

&lt;unknow man&gt; 

但我想在HTML中显示这个:

<p>&lt;unknow man&gt;</p>
<p>&lt;unknow man&gt;</p>

这个给用户:

<unknow man>

<unknow man>

PS

我找到了一个解决方案,最后,正确显示字符串,就像这个

    @if (@Model == null)
    {
        @("<unknow man>")
    }

但是谁可以向我解释浏览器中HTML.Encode的区别,以及为什么这不像第一个例子中编码的那样工作?

1 个答案:

答案 0 :(得分:1)

<p>@((@Model == null) ? @Html.Raw("&lt;unknow man&gt;") : @Model.ClientName)</p>
<p>
    @if (@Model == null)
    {
        <text>&lt;unknow man&gt;</text>
    }
    else
    {  
        @Model.ClientName;
    }
</p>