プログラムで 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。
何か案は?