切换到.net 4.0后,来自第三方gridview的一些javascript代码崩溃了。 它与HtmlEncode and UrlEncode now encode single quotation marks
有关所以在页面上的某些代码插入之前是这样的:
DataItem.GetMember('Id').Value
现在就像这样:DataItem.GetMember('Id').Value
gridview在该行上执行eval
,现在崩溃并出现语法错误。我无法更改该gridview中的javascript代码。
无论如何要解决这个问题,而不是像这样倒退吗?
<pages controlRenderingCompatibilityVersion="3.5" />
编辑:页面controlRenderingCompatiblityVersion也不解决这个问题。单引号仍然是编码的。
答案 0 :(得分:1)
从我读过的内容来看,这是一个安全功能,微软对于改变它很不满。我见过的唯一解决方法是你需要创建一个自定义编码器类。您可以使用以下方法关闭属性编码:
public class HtmlAttributeEncodingQuote : System.Web.Util.HttpEncoder
{
protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output)
{
output.Write(value);
}
}
然后将此添加到 system.web :
下的web.config中<httpRuntime encoderType="HtmlAttributeEncodingQuote"/>