Ant*_*nyJ 6 asp.net encoding asp.net-4.0 drop-down-menu
我们有一个asp:DropDownList,我们在服务器端填充
ddlBranch.Items.Add(new ListItem("TEST","This is a's test"));
Run Code Online (Sandbox Code Playgroud)
当这是在.NET 3.5下编译和运行时,我们看到文本"这是一个测试"
但是,当在.NET 4.0下编译和运行时,我们会看到文本"这是一个'测试"
我们在web.config中添加了以下内容,但没有任何更改.
<pages controlRenderingCompatibilityVersion="3.5" />
Run Code Online (Sandbox Code Playgroud)
目前我们已经退回到.NET 3.5但是我们想知道是否有办法解决这个问题,或者这是一个已知的渲染问题还是设计问题.
TIA
AJ
大家好,
感谢您的回复,他们引导我更深入地研究代码,寻找编码的地方。事实证明那是:
Server.HtmlEncode(input)
Run Code Online (Sandbox Code Playgroud)
对基页类中的所有控件执行。
现在我所认为的问题实际上是我的 RTFM 问题
来自http://www.asp.net/learn/whitepapers/aspnet4/writing-changes
HtmlEncode 和 UrlEncode 现在编码单引号在 ASP.NET 4 中,HttpUtility 和 >HttpServerUtility 类的 HtmlEncode 和 UrlEncode 方法已更新为对单引号字符 >(') 进行编码,如下所示:
HtmlEncode 方法将单引号的实例编码为 ' 。UrlEncode 方法将单引号的实例编码为 %27。
因此,当我使用 .NET3.5 时,HtmlEncode 会忽略我的单引号 ( ' ),但是当切换到 .NET 4.0 时,HtmlEncode 不会忽略它。
再次感谢人们对此问题所做的所有回应和工作。
问候
阿杰
| 归档时间: |
|
| 查看次数: |
2864 次 |
| 最近记录: |