0

我在 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>

<p>​&lt;unknow man>​&lt;/p>
​&lt;p>​&amp;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>

附言

我终于找到了一个解决方案来正确显示字符串,就像这样

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

但是谁能解释一下浏览器中 HTML.Encode 的区别,为什么这不像第一个示例中的代码那样工作?

4

1 回答 1

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>
于 2013-10-07T09:22:10.633 回答