Razor html编码不起作用

时间:2012-12-13 06:53:06

标签: asp.net asp.net-mvc-3 razor

@using MvcMusicStore.Models;
@model IEnumerable<Album>

@{
ViewBag.Title = "List2";
string hola = "Test <script>alert('bip')</script>";

}

 <h2>@@List2</h2>
 <span>@hola</span>

 <ul>
  @foreach (Album a in Model )
   {
<li>@a.Title,@a.Tipo</li>

}

</ul>

我已经读过razor自动html编码字符串,但我的视图上面有代码 我仍然得到没有任何编码的字符串。

顺便说一下我在localhost上运行,以防它以任何方式影响。

提前致谢

更新

感谢您对Codo回答的所有答案。问题是我只是 查看页面上打印的文本,但不查看编码所在的页面源 反映。

谢谢

2 个答案:

答案 0 :(得分:0)

我在这里看不到问题:

<span>@Html.Raw(hola)</span>
<br />
<span>@hola</span>

结果在浏览器中可见:

Test 
Test <script>alert('bip')</script> 

并且是“警报弹出”说双语。

注意:这不是您期待的答案,请更详细地解释您的问题。

答案 1 :(得分:0)

我已将测试用例缩减到相关部分:

@{
  string hola = "Test <script>alert('bip')</script>";
}

<span>@hola</span>

执行时,它会生成以下HTML代码(查看源HTML时):

<span>Test &lt;script&gt;alert(&#39;bip&#39;)&lt;/script&gt;</span>

在浏览器中显示:

  

测试&lt; script&gt; alert('bip')&lt; / script&gt;

它不会将其作为Javascript代码执行,也不会显示警告框。

所以我认为它的工作方式与广告一样,并且可以正确编码HTML。