Pergunta

Fundo:

Estou usando o JQuery Blockui 2.31 no jQuery 1.3.2, no ASP.NET 2.0.

Estou usando a caixa de diálogo para mostrar uma DIV (normalmente) oculta como uma espécie de diálogo modal pop-up, com os controles laterais do servidor ASP.NET nele (por uma questão de simplicidade, um botão ASP:). Não há Ajax, ou não é garantido.

Uma das coisas que o jQuery Blockui faz, se você passar por alguns elementos html-ele removerá o controle de seu lugar na página e o anexará ao corpo.

Asp.net 2.0 parece querer controles que post de volta para estar no Formato Você pode encontrar com $ (#aspnetform). JQuery Blockui acabou de movê -los para o corpo, então o postback nunca dispara.

O método é um método de instância e provavelmente não funcionará bem como estático (referências registradas nos controles de usuário e página ...)

Eu fiz algumas escavações:

Modifiquei o JQuery Blockui para anexar o formulário (e lutar com o seletor para remover o bloco), mas ele borks IE6 e IE7-a sobreposição começa no formulário e toda a caixa de diálogo aparece fora do centro. Esconder a sobreposição não é uma opção, e eu realmente odeio mexer com o script CSS e específico do IE.

Tentei anexar algumas camadas ao corpo e algumas ao formulário, mas as camadas do corpo sempre aparecem sobre as camadas de formulário (para que a camada opaca que bloqueie a entrada também bloqueará a entrada na div que estou tentando mostrar).

Estou pensando que a solução está em ter a div chamada de uma âncora fictícia escondida para executar o postback do botão original. Sontek sugeriu isso em sua resposta a uma pergunta relacionada.

Minha pergunta real:

Estou no caminho certo com o falso truque de postback? Suponho que, se estou confiando no jQuery para funcionalidade de diálogo modal, não devo me preocupar com fallback.

Ou, devo continuar a sujar com o estilo da adição de formulário?

Foi útil?

Solução

Você está praticamente preso colocando as tags de volta na etiqueta do formulário, se desejar um comportamento normal do ASP.NET, como os eventos, disparar.

Dito isto, se você está preso ao usar o modal jQuery, não acho que desencadear o postback seja uma coisa tão ruim. Como você mencionou na pergunta vinculada/relacionada, você pode obter a referência de postback GetPostBackEventReference Em seu código-behind e passe no controle de quem você deseja disparar, como:

//assuming your button is btnMyButton and
Page.ClientScript.GetPostBackEventReference(btnMyButton, null);

Você pode anexar esta chamada JavaScript a qualquer outro botão, incluindo o botão que você está movendo para fora da tag do formulário. Isso irá essencialmente conectar o postback e aumentará os eventos desse controle, como de costume.

Não é a solução mais elegante, mas acho que você está no caminho certo, se precisar usar o JQuery Modal.

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