Html.Encode至少不起作用,因为我认为它应该

时间:2010-09-13 20:34:14

标签: asp.net-mvc asp.net-mvc-2

在asp.net mvc 2视图中我试图渲染一些东西,如果是真的。

在下面的代码中,我试图使用Html.Encode(x)将值呈现到页面中,但它确实没有呈现任何内容。带有html.encode的if语句有什么问题?

作品

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%>
    <%: entry.Amount %>
  <%}%>

不起作用

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {
    Html.Encode(entry.Amount);
  }%>

3 个答案:

答案 0 :(得分:4)

您在代码块中调用Html.Encode,但这并不意味着将结果写入输出流。尝试:

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%>
    <%= Html.Encode(entry.Amount) %>
<%}%>

或更短

<%= ViewData.ContainsKey("DisplayQtyPrice") ? null : Html.Encode(entry.Amount) %>

答案 1 :(得分:3)

问题是您实际上没有向响应流添加任何内容。 Html.Encode没有任何问题,但你需要做这样的事情:

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {
    Response.Write(Html.Encode(entry.Amount));
}%>

编辑:那就是说,我认为你的第一个版本更好,除非你有尖括号的问题:)

答案 2 :(得分:0)

如果您使用的是Visual Studio 2008和/或.NET 3.5,则必须对输出进行编码,如下所示:

  

必须做到这一点无处不在是一个拖延.NET开发人员感谢简化,通过语法完全消除这种需求来确保您在.NET 4中的HTML安全性:

    

这仅仅是一种可用性改进;阅读this获取完整的绝地信用: