JQuery BlockUI et ASP.NET conflits postback
-
22-09-2019 - |
Question
Contexte:
J'utilise jquery BlockUI 2.31 jquery 1.3.2, sur ASP.NET 2.0.
J'utilise la boîte de dialogue pour afficher un (normalement) caché DIV comme une sorte de dialogue modale pop-up, avec des contrôles côté serveur ASP.NET dans le (par souci de simplicité, un aspic: Button). Il n'y a pas AJAX, ou non garanti d'être tout.
L'une des choses jquery BlockUI commet, si vous passez quelques éléments html -. Est-il supprimera le contrôle de sa place dans la page, et l'ajouter à corps
ASP.NET 2.0 semble vouloir que les contrôles de retour après être dans le formulaire vous pouvez trouver avec $ (# aspnetForm). jquery BlockUI juste les déplacé vers le corps , de sorte que le postback ne tire .
La méthode est une méthode d'instance et ne fonctionnera probablement pas bien statique (références utilisateur connecté et contrôle page ...)
Je l'ai fait quelques recherches:
Je modifié jquery BlockUI à ajouter à la forme (et lutté contre avec le sélecteur pour enlever le bloc) mais il Borks IE6 et IE7 - la superposition commence à la forme et la boîte de dialogue apparaît toute décentré. Hiding la superposition est pas une option, et je déteste vraiment déconner avec le script IE spécifique css et IE spécifiques.
J'ai essayé annexant des couches au corps et quelques-uns à la forme, mais les couches de corps montre toujours au-dessus des couches de forme (donc, la couche opaque que l'entrée de blocs permet également de bloquer l'entrée sur le div que je suis en train de spectacle).
Je pense que la solution est d'avoir l'appel div une ancre factice caché pour exécuter le postback du bouton d'origine.
La solution Vous êtes un peu coincé mettre les balises en arrière dans la balise formulaire si vous voulez comportement asp.net normal tel que les événements au feu. Cela étant dit, si vous êtes coincé sur l'utilisation du modal jQuery, je ne pense pas que le déclenchement de la postback est une si mauvaise chose. Comme vous l'avez mentionné de la question liée / liée, vous pouvez obtenir le Vous pouvez joindre cet appel javascript à un autre bouton, y compris le bouton que vous vous déplacez à l'extérieur de la balise form. Ce sera essentiellement wireup la postback et d'augmenter les événements de ce contrôle, comme d'habitude. pas la solution, mais je pense que la plus élégante que vous êtes sur la bonne voie si vous devez utiliser modal jQuery. GetPostBackEventReference
de référence postback dans votre code-behind et passer le contrôle qui est l'événement que vous voulez tirer, par exemple: //assuming your button is btnMyButton and
Page.ClientScript.GetPostBackEventReference(btnMyButton, null);