【问题标题】:literal control showing character encoding显示字符编码的文字控件
【发布时间】:2012-12-13 09:17:39
【问题描述】:

我在 asp.net 的文字控件中显示 html 实体时遇到问题。

在将内容传递给文字控件之前,我对字符进行编码,例如££ 但当它显示在页面中时,它会显示 £ 而不是 £。我检查了源代码,它没有对 html 实体进行编码,例如&amppound; 但将其显示为纯文本。

我尝试在后端删除htmlencode 并在文字控件上添加mode="encode",但我得到了相同的结果。

有人知道为什么会这样吗?

我知道我可以使用标签控件,但肯定有更好的方法吗?我不喜欢控件给出的html格式文字。

【问题讨论】:

  • 文字没有改变任何东西 - 你的代码还有其他错误。

标签: c# asp.net


【解决方案1】:

给定一个文字,lt,你不应该 HtmlEncode,并设置

lt.Mode = LiteralMode.PassThrough;
lt.Text = "&pound";

<asp:Literal runat="server" ID="lt" Mode="PassThrough">&pound;</asp:Literal>

希望这会有所帮助

【讨论】:

  • 这不起作用。我做了一个响应写入,它确实显示字符 £ 和 & 没有编码。这是预期的。这是为了测试字符是否尚未编码,因此我不是双重编码。我将模式设置为使用后端 htmlencode 和不使用。无论我通过什么都会被视为纯文本。
  • @JamesAndrewSmith 如果您只是将上面的 asp:literal 标记复制粘贴到标记中会发生什么情况 £ ?
  • 字符被编码为重新表示的值。所以&磅;将是 £ 但通过文字将其显示为 £.
  • @JamesAndrewSmith 检查没有涉及反 XSS ?喜欢stackoverflow.com/q/7695148/1236044
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
相关资源
最近更新 更多