3

プログラムで ScriptManager を無効にするためのこのアドバイスに従ってみましたが、役に立ちませんでした: 特定のページで ScriptManager を無効にする

StandardScriptManager.ascx :

<%@ control language="vb" autoeventwireup="false" codebehind="StandardScriptManager.ascx.vb" inherits="StandardScriptManager" %>
<h1>StandardScriptManager is visible</h1>
<asp:scriptmanager id="MyScriptManager" runat="server" enablepartialrendering="true" >
        <scripts>
            <asp:scriptreference path="/Standard/Core/Javascript/script1.js" />
            <!-- etc... -->
        </scripts>
</asp:scriptmanager>

StandardScriptManager.ascx.vb :

Partial Public Class StandardScriptManager
    Inherits System.Web.UI.UserControl

    Private _ScriptManager As ScriptManager

    Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        If DisableAllScripts Then
            Me.Visible = False
        End If
    End Sub

End Class

DisableAllScriptsが true の場合、は<h1>表示されませんが、スクリプトは引き続きページに追加されます。これは、ページの他の場所に ScriptManagerProxy オブジェクトがあるためだと思われます。

も試してみMe.Controls.Clear()ましたPage.Initが、これはわかります

[InvalidOperationException: Page cannot be null. Please ensure that this operation is being performed in the context of an ASP.NET request.]
   System.Web.UI.ScriptManager.get_IPage() +372796
   System.Web.UI.ScriptManager.OnPageInitComplete(Object sender, EventArgs e) +13
   System.Web.UI.Page.OnInitComplete(EventArgs e) +8699478
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +467

ScriptManager を無効にする簡単な方法がないのは腹立たしいことです。コントロールにはEnabledプロパティがなく、設定できませんScriptManager.Visible=False

何か案は?

4

1 に答える 1

1

これも機能しませんでしたが、今日解決策を見つけました。

.Net 4.0 を使用している場合は、新しい AjaxFrameworkMode プロパティを使用して Disabled に設定できます。

ScriptManager.AjaxFrameworkMode プロパティ

AjaxFrameworkMode プロパティを使用して、すべての Microsoft Ajax スクリプト ファイルを有効にしたり、すべての Microsoft Ajax スクリプト ファイルを無効にしたり、個々のスクリプト ファイルを明示的に含めたりします。

ScriptManager1.AjaxFrameworkMode = AjaxFrameworkMode.Disabled

私と同じようにここにたどり着く人の助けになることを願っています..

于 2012-02-07T12:44:32.380 に答える