当存在ScriptManagerProxy控件时,以编程方式禁用ScriptManager。

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为真时,<h1>不会显示,但脚本仍然添加到页面中。我怀疑这是因为页面上有其他ScriptManagerProxy对象。
我还尝试在Page.Init中使用Me.Controls.Clear(),但我得到了以下结果。
[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

有什么想法吗?

1个回答

1

我也无法让它工作,但今天我找到了一个解决方案。

如果您正在使用 .Net 4.0,您可以使用新的 AjaxFrameworkMode 属性,并将其设置为 Disabled。

ScriptManager.AjaxFrameworkMode Property

使用 AjaxFrameworkMode 属性启用所有 Microsoft Ajax 脚本文件、禁用所有 Microsoft Ajax 脚本文件或显式包含单个脚本文件。

ScriptManager1.AjaxFrameworkMode = AjaxFrameworkMode.Disabled

希望这能帮助到像我一样遇到问题的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接