【问题标题】:ASP.NET 4.0 DropDownList with single quotes in textASP.NET 4.0 DropDownList 在文本中带有单引号
【发布时间】:2011-05-09 01:28:41
【问题描述】:

我们有一个用于填充服务器端的 asp:DropDownList

ddlBranch.Items.Add(new ListItem("TEST","This is a's test"));

当它在 .NET 3.5 下编译和运行时,我们会看到文本“This is a's test”

但是,当它在 .NET 4.0 下编译和运行时,我们会看到文本“This is a's test”

我们在 web.config 中添加了以下内容,没有任何变化。

<pages controlRenderingCompatibilityVersion="3.5" />

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

TIA

AJ

【问题讨论】:

  • 大家好,感谢您的回复,他们让我更深入地研究代码,在某处寻找编码。事实证明,这是一个:Server.HtmlEncode(input) 正在基页面类中的所有控件上执行。请参阅asp.net/learn/whitepapers/aspnet4/breaking-changes HtmlEncode 和 UrlEncode Now Encode Single Quotation Marks 关于 .NET 4 中关于它现在识别 HTMLEncode 中的单引号的更改。感谢大家的所有投入。

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


【解决方案1】:

大家好
感谢您的回复,他们让我更深入地研究了在某处寻找编码的代码。原来那是一个:

Server.HtmlEncode(input)

在基页面类中的所有控件上执行。

现在我认为的问题实际上是我的 RTFM 案例

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

在 ASP.NET 4 中,HttpUtility 和 >HttpServerUtility 类的 HtmlEncode 和 UrlEncode 方法已更新为对单引号字符 >(') 进行如下编码:

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

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

再次感谢人们对此问题的所有回复和工作。

问候

AJ

【讨论】:

    【解决方案2】:

    当您取回该值时,您可以对选定的值进行 HTMLDecode。

    即。 Server.HtmlDecode(ddlBranch.SelectedValue)

    【讨论】:

    • 您实际上不必在代码隐藏中对其进行解码。 DropDownList 控件将为您处理。
    【解决方案3】:

    您为什么认为这是一个问题? '呈现为撇号,如果选择该值,则发布时将变为撇号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多