Pergunta

Eu tenho um gerente de script na minha página principal. Há um ou 2 páginas de conteúdo que eu preciso remover o webresourse.axd de, como ele está causando problemas com outro javascript na página

Como posso desativar o gerente roteiro nestas páginas?

O objeto ScriptManager does not parecem ter todas as propriedades que se afigura como eles iriam fazer o trabalho

Isso é possível?

Foi útil?

Solução

Mover sua para um controle personalizado, por exemplo MyScriptManager.ascx - o único código no arquivo .ascx será o tag ScriptManager -., Em seguida, você pode definir o Visível propriedade no seu controle personalizado para controlar se a ScriptManager é renderizado

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

Você poderia talvez até mesmo adicionar uma propriedade ao seu MasterPage que você poderia usar em suas páginas de conteúdo para mostrar / ocultar o 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;
    ...
}

Como a maioria de suas páginas exigem o ScriptManager, pode ser uma idéia para torná-lo padrão para true - Eu acho que você pode fazer isso no construtor do método Page_Init de seu Mestre Página:

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

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

Então, se você definir o MasterType em suas páginas de conteúdo:

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

Você só precisa fazer algo assim no conteúdo da página de Page_Load :

Master.ShowScriptManager = false;

Outras dicas

Você também pode colocar o gerente de script em um ContentPlaceHolder,

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

e nas páginas que deseja removê-lo, ter um asp: ponto de tag de conteúdo para ele, e ele irá removê-lo da página:

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

Para quem acaba aqui e ainda não pode obtê-lo para trabalhar com um UserControl ...

Se você estiver usando .NET 4.0 você pode usar a nova propriedade AjaxFrameworkMode e configurá-lo para pessoas com mobilidade condicionada.

ScriptManager.AjaxFrameworkMode Propriedade

Espero que ajude alguém!

Gostaria de usar páginas mestras aninhadas. Um mestre de base que tem a sua marcação com um espaço reservado de conteúdo extra, onde o gerente roteiro seria. Em seguida, duas versões do mestre aninhada, um com um gerente de script e um sem. E suas páginas usar a página mestra aninhada apropriada.

Eu estou deixando no texto abaixo para que os comentários fazer sentido, mas isso não funciona ...

Como sobre isto:

-Coloque um AppSetting em sua webconfig com uma lista de URI do que você não quer ter um gerente de script.
-No manipulador de eventos Page_Init do mestre, conseguir que coleta e teste para ver se a solicitação da página atual está na lista. Se assim for, remova o scriptmanager da coleção controles do mestre.

ou seja, no código da página mestre por trás:

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: Há um monte de perigo no que você está fazendo. Se a sua página principal tem quaisquer painéis de atualização, ou qualquer uma das páginas que você está removendo o gerente de tê-los, eles vão bombardear fora. Você poderia loop através da coleção de controle do mestre ea página nos masters o init e de verificação para qualquer painéis de atualização também. Embora, eu não sei o que você faria se você os encontrou. A remoção deles provavelmente iria remover qualquer conteúdo nelas. Na melhor das hipóteses, você poderia 1) Não remova o Script Manager se um painel de atualização é encontrada, ou 2) Personalize o erro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top