.NET与HTML实体:它进行第二次解码?

时间:2012-01-27 14:37:10

标签: asp.net .net html encoding html-entities

为什么我在.aspx页面上(在.NET 3.5上)写道:

<%="W&auml;hlen Sie bitte"%>

它在我的html页面上正确打印:

W&auml;hlen Sie bitte

但如果我在.aspx.cs页面上写一些像:

mySelectBox.Items.Add(new ListItem("W&auml;hlen Sie bitte", ""));

(这是相同的字符串)它在选择一个不正确的html上打印为选项:

W&amp;auml;hlen Sie bitte

它对我的字符串进行“解码”。为什么?我该如何解决?

2 个答案:

答案 0 :(得分:3)

您的第一个语法是输出您按字面意思传递的HTML,这样您可能包含的任何HTML都会呈现而不是编码。

第二种语法是为了传递你想要显示的文字文本;它为您执行HTML编码。你已经过度编码了这个值。

答案 1 :(得分:2)

ASP.NET控件已对输出进行HTML编码,因此您无需再次执行此操作。

简单地:

mySelectBox.Items.Add(new ListItem("Wählen Sie bitte", ""));