我们有一个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
答案 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;渲染为撇号,如果选中该值,则发布后将变为撇号。