【问题标题】:Razor html encode not working [closed]Razor html编码不起作用[关闭]
【发布时间】:2012-12-13 06:53:06
【问题描述】:
@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>

我读过剃须刀自动对字符串进行 html 编码,但我认为上面的代码 我仍然按原样获取字符串,没有任何编码。

顺便说一句,我在本地主机上运行,​​以防它以任何方式影响。

提前致谢

更新:

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

谢谢

【问题讨论】:

  • 当您说“按原样获取字符串”时,您的确切意思是什么?是否显示带有“bip”的消息框?
  • @FyodorSoikin 我的意思是它打印:测试 而不应用任何编码

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


【解决方案1】:

我已将测试用例简化为相关部分:

@{
  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>

在浏览器中显示:

测试

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

所以我会说它作为广告工作并正确编码 HTML。

【讨论】:

  • 太棒了!!它消除了我的困惑,谢谢
  • @lcaminero 您应该考虑接受 Codo 的回答,因为它显然可以帮助您解决问题。
  • @Bardo 刚刚做了,这是我在这里的第一篇文章,不知道如何接受它。我试图投票而不是接受它。感谢您的建议。
【解决方案2】:

我没有看到这里的问题:

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

结果在浏览器中可见:

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

并且是“弹出警报”说 bip。

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

【讨论】:

  • OP 的问题是它没有按照他的预期进行编码,而不是他试图获得原始输出。
  • @DocMax 正是我希望它被编码,但我不知道它为什么不对其进行编码,提供的答案是不对其进行编码,而我希望它被编码
猜你喜欢
  • 2011-06-25
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多