0

ajaxcontroltoolkitのタブコンテナと透かしコントロールを含むフォームがあります。次のgzipプロシージャを使用すると、Sys.Extendedが未定義になります次のコードはGlobal.asaxファイルからのものです:

void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        HttpApplication app = sender as HttpApplication;
        string acceptEncoding = app.Request.Headers["Accept-Encoding"];
        Stream prevUncompressedStream = app.Response.Filter;

        if (!(app.Context.CurrentHandler is Page ||
            app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
            app.Request["HTTP_X_MICROSOFTAJAX"] != null)
            return;

        if (acceptEncoding == null || acceptEncoding.Length == 0)
            return;

        acceptEncoding = acceptEncoding.ToLower();

        if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
        {
            // defalte
            app.Response.Filter = new DeflateStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "deflate");
        }
        else if (acceptEncoding.Contains("gzip"))
        {
            // gzip
            app.Response.Filter = new GZipStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "gzip");
        }
    }

上記のコードを削除すると、エラーはなくなり、すべてが正常に機能します。

これはweb.configの制御タグです。

<controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
    <add tagPrefix="HTMLEditor" namespace="AjaxControlToolkit.HTMLEditor" assembly="AjaxControlToolkit"/>
</controls>

alert(Sys.Extended.UI.TabPanel);を実行すると Firebugコンソールで「Sys.Extendedisundefined」というエラーが発生しました。しかし、alert(Sys.Extended);のみを実行すると エラーではなく「未定義」というメッセージが表示されます。これは意味がありますか?また、ブラウザからページを保存すると、「ソースファイルを読み取れなかったため、default.jsを保存できませんでした」というメッセージが表示され、ページ内にページの.jsファイルが見つかりませんでした。 default_filesフォルダー。しかし、global.asaxファイルからgzipコードを削除すると、default_filesフォルダーにdefault.jsファイルが見つかりました。

4

1 に答える 1

0

ToolKitScriptManager を使用していますか? その場合は、複合スクリプトが正しい順序になっていることを確認してください。

<compositescript>
    <scripts>
        <asp:scriptreference name="WebForms.js" assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" scriptmode="Release"></asp:scriptreference>    
        <asp:scriptreference name="WebUIValidation.js" assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" scriptmode="Release"></asp:scriptreference>    
        <asp:scriptreference name="MicrosoftAjax.js" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" scriptmode="Release"></asp:scriptreference>    
        <asp:scriptreference name="MicrosoftAjaxWebForms.js" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" scriptmode="Release"></asp:scriptreference>
    </scripts>
</compositescript>

Sys is undefinedで言及されている可能性は他にもあります

于 2012-09-23T21:24:16.310 に答える