2010-06-04 4 views
2

J'ai essayé suivant ces conseils pour désactiver un ScriptManager programme, en vain: Disable ScriptManager on certain pagesScriptManager programme lorsque les contrôles ScriptManagerProxy sont présents

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 

Lorsque DisableAllScripts est vrai, le <h1> n'apparaît pas, mais les scripts sont toujours ajoutés à la page. Je suppose que c'est parce que j'ai des objets ScriptManagerProxy ailleurs sur la page.

J'ai aussi essayé Me.Controls.Clear() dans Page.Init, mais je reçois ce

[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 

Il est affolant qu'il n'y a pas un moyen facile de désactiver le ScriptManager; le contrôle n'a aucune propriété Enabled et vous ne pouvez pas définir ScriptManager.Visible=False.

Des idées?

Répondre

0

Je n'arrivais pas à faire marcher ça mais j'ai trouvé une solution aujourd'hui.

Si vous utilisez .Net 4.0, vous pouvez utiliser la nouvelle propriété AjaxFrameworkMode et la définir sur Disabled.

ScriptManager.AjaxFrameworkMode Property

Utilisez la propriété AjaxFrameworkMode pour activer tous les fichiers de script Microsoft Ajax, pour désactiver tous les fichiers de script Microsoft Ajax, ou explicitement inclure des fichiers de script individuels.

ScriptManager1.AjaxFrameworkMode = AjaxFrameworkMode.Disabled

espoir qui aide à quelqu'un qui finit ici comme je l'ai fait ..

Questions connexes