2012-06-15 9 views
7

.net 4.0に切り替えると、サードパーティのgridviewからのJavaScriptコードがクラッシュします。 DataItem.GetMember('Id').Value.net 4.0を一重引用符でエンコードするのを止めることはできますか?

GridViewのは、その行にevalを行います。その次のようになりました DataItem.GetMember('Id').Value

をして: それはこのように挿入されたページ上のいくつかのコードの前にそうHtmlEncode and UrlEncode now encode single quotation marks

とは何かを持っています今、構文エラーでクラッシュします。私はそのgridviewのjavascriptコードを変更することはできません。

これを解決するにはどうしたらいいですか?

<pages controlRenderingCompatibilityVersion="3.5" /> 

EDIT:ページcontrolRenderingCompatiblityVersionもこの問題を解決しません。一重引用符はまだコード化されています。

+0

あなたはWebフォームまたはMVCを使用していますか? –

+0

興味深い問題。 "eval"は悪いので、あなたがそれについているのは残念です。 :( – Almo

+0

私はwebformsを使用しています –

答えて

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"/>