ASP.NET 4.0 DropDownList,文本中带有单引号

时间:2011-05-09 01:28:42

标签: asp.net encoding drop-down-menu asp.net-4.0

我们有一个asp:DropDownList,我们用

填充服务器端
ddlBranch.Items.Add(new ListItem("TEST","This is a's test"));

当在.NET 3.5下编译和运行时,我们会看到文本“这是一个测试”

然而,当在.NET 4.0下编译并运行时,我们会看到文本“这是' s测试”

我们已将以下内容添加到我们的web.config中,但没有任何更改。

<pages controlRenderingCompatibilityVersion="3.5" />

目前我们已经退回到.NET 3.5但是我们想知道是否有办法解决这个问题,或者这是一个已知的渲染问题还是设计问题。

TIA

AJ

3 个答案:

答案 0 :(得分:2)

大家好 感谢您的回复,他们让我深入研究代码中寻找Encode的代码。事实证明那是:

Server.HtmlEncode(input)

对基页类中的所有控件执行。

现在我认为是一个问题,实际上是我本人的RTFM案例

  

来自http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes
  HtmlEncode和UrlEncode现在编码单个引号

     

在ASP.NET 4中,已更新HttpUtility和&gt; HttpServerUtility类的HtmlEncode和UrlEncode方法,以编码单引号字符&gt;('),如下所示:

     

HtmlEncode方法将单引号的实例编码为'。   UrlEncode方法将单引号的实例编码为%27。

因此,当我使用.NET3.5时,我的单引号(')被HtmlEncode忽略,但是当切换到.NET 4.0时,HtmlEncode没有忽略它。

再次感谢人们对这个问题的所有回应和工作。

此致

AJ

答案 1 :(得分:0)

当您获得值时,您可以只对所选值进行HTMLDecode。

即。 Server.HtmlDecode(ddlBranch.SelectedValue)

答案 2 :(得分:0)

为什么你认为这是一个问题? &安培;#39;渲染为撇号,如果选中该值,则发布后将变为撇号。