asp.net - 存在ScriptManagerProxy控件时,以编程方式禁用ScriptManager

标签 asp.net asp.net-ajax scriptmanager

我尝试遵循以下建议以编程方式禁用ScriptManager,但无济于事:
Disable ScriptManager on certain pages

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

有任何想法吗?

最佳答案

我也无法使它正常工作,但今天我找到了解决方案。

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

ScriptManager.AjaxFrameworkMode Property

使用AjaxFrameworkMode属性来启用所有Microsoft Ajax脚本
文件,以禁用所有Microsoft Ajax脚本文件,或显式
包括单个脚本文件。

ScriptManager1.AjaxFrameworkMode = AjaxFrameworkMode.Disabled

希望能像我一样帮助到这里来的人。

关于asp.net - 存在ScriptManagerProxy控件时,以编程方式禁用ScriptManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2975962/

相关文章:

asp.net - 使用Global.asax进行授权检查

javascript - 我怎样才能让这个 javascript 调用我的 C# 方法并传递参数

javascript - 如何在 asp.net 中从 c# 运行 javascript

JavaScript、页面方法和 Gridview

php - 不使用生产服务器直接上传到 s3

asp.net - 用于 ASP.NET Web 服务器控件的单独 CSS 文件

javascript - 使用 jQuery 从中间到顶部为多个元素设置动画

asp.net - UpdatePanel、Repeater、DataBinding 问题

javascript - 单击按钮时更新面板并滚动到顶部

asp.net - 输入类型不是 html5 中的文本的 UpdatePanel