在asp.net mvc 2视图中我试图渲染一些东西,如果是真的。
在下面的代码中,我试图使用Html.Encode(x)将值呈现到页面中,但它确实没有呈现任何内容。带有html.encode的if语句有什么问题?
作品
<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%>
<%: entry.Amount %>
<%}%>
不起作用
<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {
Html.Encode(entry.Amount);
}%>
答案 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获取完整的绝地信用: