Pergunta

Eu tenho uma página com diferentes espaços reservados. Em um deles, eu tenho um link que eu quero abrir um popup modal em um segundo espaço reservado (usando o ModalPopupExtender ajaxToolkit):

<asp:Content ID="content1" ContentPlaceHolderID="placeholder1" Runat="Server">
   <asp:LinkButton ID="link" runat="server" Text="Popup link" />
</asp:Content>

<asp:Content ID="content2" ContentPlaceHolderID="placeholder2" Runat="Server">
   <asp:Panel ID="panel" runat="server" Text="Popup content" />
   <ajaxToolkit:ModalPopupExtender ID="popup" runat="sever"
      TargetControlID="link"
      PopupControlID="panel"
      />
</asp:Content>

Ao fazer como acima, ele me dispara uma exceção, dizendo que popup não consegue encontrar link (que eu entendo, porque eles estão em dois espaços reservados diferentes).

Como posso fazer este trabalho? Não consigo pensar em algo achado FindControl no de trás do código, mas eu realmente não gosto de usar esta função, como é bastante computacionalmente caro (especialmente com meu layout aninhada).

Foi útil?

Solução

Uma questão é que seu TargetControlID e PopupControlIDs estão invertidos. TargetControlID é o ID do item que você quer 'Modal Pop', no seu caso, que seria Panel1. O PopupControlID é o ID do controle que provocaria o ModalPopup, no seu caso, que seria "Link"

Mas você ainda tem algumas opções, se isso não funcionar, eu disparou um modal localizado em um painel de atualização diferente antes de usar o método abaixo. Apesar de não ser exatamente o mesmo problema, essa solução pode ajudá-lo (eu estou supondo que você tem um gerente de script em sua página).

  1. Criar um elemento escondido em Content2 com ID = "hiddenLink"
  2. Defina o seu ModalExtender PopupControlID = "hiddenLink"
  3. No CodeBehind para "link" em content1, adicione um evento onClick com o seguinte

    ModalPopup1.show ()

  4. Se você estiver usando UpdatePanels, isso fará com que o ModalPopup para exibição em AJAX moda sem página refresh.But você ainda teria uma worht postback completo de dados entre o cliente eo servidor.

Método 2, você poderia usar uma função javascript para mostrar aos Modal também. Adicionar um behaviorID = "MyModal1" (ou o que você quiser chamá-lo) para a sua definição ModalPopup. Em seguida, mude o seu link:

<asp:LinkButton ID="link" runat="server" Text="Popup link" OnClientClick="$get('MyModal1').show(); return false;"/>

Nota:. O falso retorno no exemplo acima impede que a página .NET de executar uma nova postagem

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