Domanda

Ho uno script manager sulla mia pagina master. Ci sono una o due pagine di contenuti che ho bisogno di rimuovere il webresourse.axd da, come sta causando problemi con altri javascript nella pagina

Come posso disattivare lo script manager su queste pagine?

L'oggetto ScriptManager doesnt sembrano avere alcuna proprietà che sembrerebbero come avrebbero fatto il lavoro

È possibile?

È stato utile?

Soluzione

Sposta il per un controllo personalizzato per esempio MyScriptManager.ascx - l'unico codice nel file ascx sarà il tag ScriptManager -. Quindi è possibile impostare la Visibile proprietà sulla vostra controllo personalizzato per controllare se lo ScriptManager viene reso

<foo:MyScriptManager id="scriptManager" runat="server" Visible="false" />

Si potrebbe forse anche aggiungere una proprietà alla MasterPage che si potrebbe utilizzare per le pagine di contenuti per mostrare / nascondere la ScriptManager:

// In your master page
public bool ShowScriptManager {get; set;}

// In your master page's Page_Load
private void Page_Load(object sender, EventArgs e) {
    ...
    scriptManager.Visible = ShowScriptManager;
    ...
}

Come la maggior parte delle tue pagine richiedono l'ScriptManager, potrebbe essere un'idea per renderlo di default a true - Penso che si possa fare questo nel costruttore di metodo Page_Init del vostro Maestro Pagina:

public SiteMaster() {
    ...
    ShowScriptManager = true;
    ...
}

// Or alternatively
private void Page_Init(object sender, EventArgs e) {
    ...
    ShowScriptManager = true;
    ...
}

Quindi, se hai impostato il MasterType nelle pagine di contenuti:

<%@ MasterType VirtualPath="~/path/to/master/page" %>

Hai solo bisogno di fare qualcosa di simile in pagina di contenuti Load :

Master.ShowScriptManager = false;

Altri suggerimenti

Si potrebbe anche mettere il manager script in un ContentPlaceHolder,

<asp:ContentPlaceHolder ID="cph_ScriptManager" runat="server"></asp:ContentPlaceHolder>
    <asp:ScriptManager ID="ScriptManager" runat="server"></asp:ScriptManager>
</asp:ContentPlaceHolder>

e sulle pagine che si desidera rimuoverla, hanno un asp: Content punto di tag in esso, e la rimuoverà dalla pagina:

<asp:Content ID="content_SM_Overrride" ContentPlaceHolderID="cph_ScriptManager" runat="server">
<!-- ScriptManager Not Needed on this ASPX  -->
</asp:Content>

Per chi finisce qui e ancora non può farlo funzionare con un UserControl ...

Se si utilizza Net 4.0 è possibile utilizzare la nuova proprietà AjaxFrameworkMode e impostarlo su Disabilitato.

ScriptManager.AjaxFrameworkMode Proprietà

La speranza che aiuta qualcuno!

Vorrei utilizzare le pagine master nidificate. Un maestro di base che ha il vostro markup con un segnaposto contenuto extra in cui il gestore sceneggiatura sarebbe. Poi due versioni del maestro nidificato, una con uno script manager e uno senza. E le tue pagine utilizzano la pagina master nidificata appropriata.

me ne vado nel testo che segue in modo che i commenti hanno senso, ma questo non funziona ...

Che ne dite di questo:

-Mettere un appsetting in WebConfig con un elenco di URI di che non si vuole avere uno script manager.
-In il gestore di eventi Page_Init del maestro, ottenere che la raccolta e test per vedere se la richiesta della pagina corrente è nella lista. In tal caso, rimuovere lo ScriptManager dalla raccolta controlli del maestro.

ovvero, nel codice della pagina maestro dietro:

Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    If DirectCast(Page, System.Web.UI.Page).AppRelativeVirtualPath = "~/Test.aspx" Then
        Me.Controls.Remove(Me.FindControl("ScriptManager1"))
    End If
End Sub

Nota: Ci sono un sacco di pericolo in quello che stai facendo. Se la pagina principale ha i pannelli di aggiornamento, o una qualsiasi delle pagine che si sta rimuovendo il direttore di loro hanno, essi bombardare fuori. Si potrebbe ad anello attraverso la raccolta di controllo del maestro e la pagina ai master init e verificare la presenza di eventuali pannelli aggiornamento pure. Anche se, io non sono sicuro di quello che si potrebbe fare se le avete trovate. La rimozione sarebbe probabilmente rimuovere qualsiasi contenuto in esse. Nella migliore delle ipotesi, si potrebbe o 1) Non rimuovere il Gestore script se un pannello di aggiornamento viene trovato, o 2) Personalizzare l'errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top