7

After switching to .net 4.0, some javascript code from a third party gridview crashes. It has got something to do with HtmlEncode and UrlEncode now encode single quotation marks

So before some code on the page was inserted like this: DataItem.GetMember('Id').Value

and now its like this: DataItem.GetMember('Id').Value

The gridview does an eval on that line, and crashes with a syntax error now. I can't change the javascript code in that gridview.

Is there anyway to solve this, without going backwards like this?

<pages controlRenderingCompatibilityVersion="3.5" /> 

EDIT: the pages controlRenderingCompatiblityVersion doesn't fix this also. Single quotes are still encoded.

4

1 に答える 1

1

私が読んだ限りでは、これはセキュリティ機能であり、Microsoft はそれを変更することに消極的です。私が確認した唯一の回避策は、カスタム エンコーダー クラスを作成する必要があることです。これを使用して属性エンコーディングをオフにすることができます:

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"/>
于 2012-06-15T13:50:19.713 に答える