Pergunta

Eu tenho 3 tipos diferentes de ajax popups que precisam existir em meu site. Eu estava esperando que eu poderia simplesmente criar um controle de usuário para cada um e colocar o painel e extensor popup modal dentro de cada um, mas isso não parece estar funcionando. Alguém já tentou isso antes ou você tem uma recomendação de como eu posso evitar código duplicado para cada aparecer em páginas diferentes? Obrigado!

Foi útil?

Solução

Ah eu descobri o meu problema com o User Control eu acredito.

O ModalPopupExtender requer a propriedade TargetID a ser definido caso contrário ocorre um erro. Uma vez que este está sentado em um UserControl Acabei de criar um botão de ligação fictício que não faz nada e eu definir a propriedade visível para false.

    <asp:LinkButton ID="lnkBlank" runat="server" Visible="false" />
    <asp:Panel ID="plContainer" style="display: none;" runat="server">
            Hello?
    </asp:Panel>
    <cc1:ModalPopupExtender ID="mpe" runat="server" 
            BehaviorID="test"
            TargetControlID="lnkBlank" 
            PopupControlID="plContainer" />

Aparentemente, ele não aprecia isso e no momento em que definir a propriedade visível a verdade começou a trabalhar. Não sei o que o raciocínio é para um TargetID uma vez que, eu acho, mais pop-ups poderia ser chamado de vários links sobre a página. Talvez eu estou ainda não é totalmente clara sobre como esse controle é suposto ser usado.

Outras dicas

Uma opção seria escrever os popups em um controle de usuário asp.net (uma página .ascx) e que incluem nas páginas que você precisa os popups. Ter um método público na página ascx que irá mostrar o pop-up, e chamá-lo a partir da página pai quando você precisa. Se você já tem um gerente de script na página pai, você não pode ter um segundo na página ascx, mas outras que não deve haver nada que possa impedir que isso funcionando. Espero que isso ajude!

Edit: Aqui está o que os meus modais aparência de controle pop-up extensor como ...

<cc1:ModalPopupExtender 
    ID="mpeClassroom" 
    BackgroundCssCLass="modalBackground"      
    runat="server"        
    CancelControlID="lbClose"
    OnOkScript="onOk()"
    TargetControlID="Button1" 
    PopupControlID="pnlClassroom">
</cc1:ModalPopupExtender>

no meu código por trás da página, o meu método só chama mpeClassroom.Show ();

O problema com a ligação escondida como TrgetControlID é que; quando u definir sua visibilidade como falso, servidor não torná-lo tão bem. PopExtender então não consegue encontrar o controle na página.

Em vez de definir a sua visibilidade como falso, tenta aplicar um estilo com display: none. Isso deve funcionar!

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