Html.Encode 至少不能像我认为的那样工作
Posted
技术标签:
【中文标题】Html.Encode 至少不能像我认为的那样工作【英文标题】:Html.Encode does not work atleast not as i think it should 【发布时间】:2010-09-13 20:34:14 【问题描述】:在 asp.net mvc 2 视图中,如果为真,我将尝试渲染某些内容。
在下面的代码中,我尝试使用 html.Encode(x) 将值呈现到页面中,但它没有呈现任何内容。 html.encode的if语句有什么问题?
作品
<%if (!ViewData.ContainsKey("DisplayQtyPrice")) %>
<%: entry.Amount %>
<%%>
没用
<%if (!ViewData.ContainsKey("DisplayQtyPrice"))
Html.Encode(entry.Amount);
%>
【问题讨论】:
【参考方案1】:您在代码块中调用 Html.Encode,但这并不意味着将结果写入输出流。试试:
<%if (!ViewData.ContainsKey("DisplayQtyPrice")) %>
<%= Html.Encode(entry.Amount) %>
<%%>
或者更短
<%= ViewData.ContainsKey("DisplayQtyPrice") ? null : Html.Encode(entry.Amount) %>
【讨论】:
我认为 与您在第一个代码块中建议的相同,是的,这是正确的方法【参考方案2】:问题是您实际上并没有向响应流添加任何内容。 Html.Encode 没有什么问题,但是你需要做这样的事情:
<%if (!ViewData.ContainsKey("DisplayQtyPrice"))
Response.Write(Html.Encode(entry.Amount));
%>
编辑:也就是说,我认为你的第一个版本更好,除非你有尖括号的问题:)
【讨论】:
尖括号没问题,它只是看起来很难看,不能向孩子展示代码,否则我失去了抱怨他们的笔迹的权利:) 只是为了澄清上面的答案: 是 Response.Write(expression) 的简写【参考方案3】:如果您使用的是 Visual Studio 2008 和/或 .NET 3.5,您必须像这样对输出进行编码:
不得不这样做是一个拖累 .NET 开发人员谢天谢地通过语法完全消除了这种需要来确保您在 .NET 4 中的 HTML 安全性:
这仅仅是一个可用性改进;阅读this 以获得完整的绝地学分:
【讨论】:
以上是关于Html.Encode 至少不能像我认为的那样工作的主要内容,如果未能解决你的问题,请参考以下文章
无法理解 size_hint。为啥这个 .kv 简单的代码不能像我预期的那样工作?
Python handlers.TimedRotatingFileHandler旋转不能像我预期的那样工作